Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 使用NoSQL数据库防止节点中插入错误数据_Ajax_Security_Node.js_Nosql - Fatal编程技术网

Ajax 使用NoSQL数据库防止节点中插入错误数据

Ajax 使用NoSQL数据库防止节点中插入错误数据,ajax,security,node.js,nosql,Ajax,Security,Node.js,Nosql,假设我们有一个简单的NodeJS后端,与标准的NoSQL文档存储(如CouchDB)相匹配。因为我们的数据库只是一个没有模式的文档密钥存储,所以可以插入任何内容。而且,由于我们的服务器也是基于JSON构建的,因此,最终从带有JSON有效负载的客户端传入的POST请求会直接存储到我们的数据存储中 这当然非常方便,并且有利于轻量级应用程序。不过,我一直在想,除了为每个可能的插入端点编写代码来验证每个POST或PUT请求的格式是否正确之外,是否有任何措施可以防止攻击者启动其开发人员控制台并欺骗POST

假设我们有一个简单的NodeJS后端,与标准的NoSQL文档存储(如CouchDB)相匹配。因为我们的数据库只是一个没有模式的文档密钥存储,所以可以插入任何内容。而且,由于我们的服务器也是基于JSON构建的,因此,最终从带有JSON有效负载的客户端传入的POST请求会直接存储到我们的数据存储中

这当然非常方便,并且有利于轻量级应用程序。不过,我一直在想,除了为每个可能的插入端点编写代码来验证每个POST或PUT请求的格式是否正确之外,是否有任何措施可以防止攻击者启动其开发人员控制台并欺骗POST/PUT请求,从而允许他们将任何类型的垃圾数据插入我们的数据存储?以这种方式破坏应用程序的数据不会太困难

显然,基于令牌的身份验证可以确保只有经过身份验证的用户才能访问这些服务端点,但这并不阻止他们使用有效请求具有的相同HTTP头来欺骗这些请求。使用今天的浏览器开发工具,这一切都非常简单

在传统的服务器语言(如Java)中,JSON PUT和POST被编组到一个高度结构化的基于类的对象。有效负载与这些格式不匹配的请求将被HTTP错误拒绝


有人知道node的工具或范例吗?它们确保这样的请求满足一些基本的结构标准

你不能两全其美。要么验证数据,要么不验证。如果你不验证它,那么你就会遇到你提到的风险。您需要的验证类型将取决于您的应用程序。如果您使用的是CouchDB,您可以使用内置的。