如何避免CouchDB和noSQL数据库出现类似SQL的注入问题?

lpwwtiir  于 2022-12-09  发布在  CouchDB
关注(0)|答案(1)|浏览(103)

我非常简单的to-do应用程序将在客户端使用PouchDb,在服务器端使用CouchDB。每个条目将首先保存在本地的PouchDB中,然后与服务器端的CouchDB进行复制。应用程序的每个用户将在他们的设备上拥有自己的客户端数据库,以及自己的云数据库,所有这些都有自己的身份验证。
这篇文章(Architecture of an app when using CouchDB/PouchDB)很有帮助,但是我仍然在努力想我需要采取什么步骤来确保,至少尽可能地,来自用户的输入是无害的。
我可能会做更多的这比实际存在的,因为很可能任何坏演员只会破坏自己的数据(谁在乎呢?),但我仍然想知道如何为noSQL数据库净化用户输入的数据。同样,我上面引用的帖子有一些很好的入门信息,但我仍然找不到任何关于应该注意什么的提示,转义什么字符等。
从我有限的SQL经验来看,您必须注意有人试图插入HTML或某些javascript,这是有道理的,但我不知道什么数据序列可能会以某种方式对CouchDB有害。

  • 通过将脚本与用户输入连接,避免创建“ad-hoc”JS命令
  • 使用正则表达式验证服务器端JS命令中使用的用户输入(好主意......但如何验证?)
  • 避免使用eval. json.parse
y4ekin9u

y4ekin9u1#

CouchDb在每个数据库中都有一个验证钩子,你可以用它来检查或阻止对文档的更新。官方文档中有关于这方面的信息。它是一个设计文档,带有一个用Javascript编写的名为validate_doc_update的函数,它给你原始的和修改过的文档上下文,这样你就可以根据对文档的更改来“返回”或“抛出”。

相关问题