尝试(学习)实现我的第一个数据库时遇到的问题

问题描述 投票:0回答:0

我开始通过一个小型聊天应用程序学习 node.js,但是在尝试实现 SQL 数据库时,我开始面临一些问题。

起初,我做了一个单独的模块(database.js)并写了一些代码来与我制作的表进行交互,以一种导出函数(例如getUser,deleteMessage等)不将SQL作为参数的方式,因为不仅处理 SQL 应该是 database.js 的责任,而且无论您如何使用导出的函数,它都可以防止 SQL 注入攻击。

但我注意到这样做在某些情况下会降低很多效率。例如,如果我想获取用户“someuser”在下午 3:00 之后发送的每条消息,我必须获取所有消息,然后循环遍历它们,将满足条件的消息添加到另一个数组。这比直接将条件提供给 SQL 需要更多的内存AND时间。

唯一的两个解决方案,至少是我发现的唯一解决方案,要么接受它,要么在我导出的函数的参数中添加一些 SQL,而不仅仅是增加耦合(这对我来说非常糟糕知道),但也增加了滥用这些功能和受到 SQL 注入攻击的可能性(这显然更糟)。

这里的解决方案应该是什么?忍受低效率、增加耦合和漏洞风险,或者我没有想到的其他解决方案?

附言如果你想看代码就问,我没有把它放在这里是因为它没有太多内容,它主要是 500 行的方式,这些函数记录得很好(说真的,有 200 行实际代码和 300 行 jsdoc ,不知道这是好是坏)。或者也许只问基本结构,那也行 lol

node.js sqlite sql-injection decoupling
© www.soinside.com 2019 - 2024. All rights reserved.