1

我非常简单的待办事项应用程序将在客户端使用 PouchDb,在服务器端使用 CouchDB。每个条目将首先本地保存在 PouchDB 中,然后将与服务器端 CouchDB 进行复制。该应用程序的每个用户都将在他们的设备上拥有自己的客户端数据库,以及自己的云数据库,所有这些都具有自己的身份验证。

这篇文章(使用 CouchDB/PouchDB 时应用程序的架构)非常有帮助,但我仍然在努力解决我需要采取哪些步骤来确保至少尽可能多地确保来自用户的输入无害。

我可能比实际情况做得更多,因为任何不良行为者都可能只会破坏他们自己的数据(那时谁在乎?),但我仍然想知道如何清理用户输入的数据一个 noSQL 数据库。同样,我在上面引用的帖子有一些很好的起始信息,但我仍然找不到任何提供有关注意事项、转义字符等提示的信息。

根据我对 SQL 的有限经验,您必须注意有人试图插入 HTML 或一些 javascript,但我不知道哪些数据序列可能对 CouchDB 有害。我读过的一篇文章建议人们应该:

  • 通过将脚本与用户输入连接来避免创建“临时”JS 命令
  • 使用正则表达式验证服务器端 JS 命令中使用的用户输入(好主意……但是如何?)
  • 避免评估。使用 json.parse
4

1 回答 1

1

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

于 2019-05-07T08:22:14.860 回答