在MEAN堆栈中应该创buildvalidation规则的地方?
我正在使用MEAN堆栈创build一个应用程序,该堆栈有大量的表单数据条目,这些数据条目从authentication用户和匿名用户持久保存到数据库。
在堆栈中,我应该创build所有的validation规则? 他们应该在AngularJS? 但是我想我的服务器端API是安全的,所以也许他们应该在Express中,然后冒泡给AngularJS? 或者他们应该一直在MongoDB层(我将使用Mongoose,所以很容易在那里创buildvalidation)。
目前,我已经把它们传播开来,并且发现自己重复了规则。 我想避免这种情况,并在一个地方创build规则。 那么在MVW应用程序中定义validation的一般规则是什么,以及哪个层最适合他们(特别是对于MEAN应用程序)呢?
根据OWASP的build议
在哪里包括validationvalidation必须在每一层进行。 但是,validation应该按照执行代码的服务器的function来执行。 例如,Web /表示层应validationWeb相关的问题,持久层应validation持久性问题,如SQL / HQL注入,目录查找应检查LDAP注入等等。
你需要到处validation。
在Angular部分中,您可以在客户端validation问题,而不必一路回到服务器,所以应该尽早地避免这类问题。
明示,你需要validation,因为你不能相信你的前端。
在Mongo上,您需要validation访问权限,权限,要插入的数据等
你为什么要validation?
最常见的Web应用程序安全弱点是未能正确validation来自客户端或环境的input。 这种弱点导致几乎所有应用程序中的主要漏洞,如解释器注入,区域/ Unicode攻击,文件系统攻击和缓冲区溢出。 来自客户端的数据不应该被信任,因为客户端有可能篡改数据。
来自同一个来源: