我正在使用MEAN堆栈创建一个应用程序,该堆栈包含大量表单数据条目,这些条目将通过身份验证和匿名用户持久保存到数据库中。
我应该在堆栈中的哪个位置创建所有验证规则?他们应该在AngularJS吗?但我希望我的服务器端API是安全的,所以也许他们应该在Express中然后冒泡到AngularJS?或者它们应该一直在MongoDB层(我将使用Mongoose,因此在那里创建验证很容易)。
目前,我将它们传播到各处,并发现自己重复规则。我想避免这种情况,并在一个地方制定规则。那么在MVW应用程序中定义验证的一般规则是什么,最好将它们放在哪一层(特别是对于MEAN应用程序)?
答案 0 :(得分:3)
根据OWASP建议
包含验证的位置 必须在每个层上执行验证。但是,应根据执行代码的服务器的功能执行验证。例如,Web /表示层应验证与Web相关的问题,持久层应验证持久性问题(如SQL / HQL注入,目录查找应检查LDAP注入等)。
您需要在任何地方进行验证。
在Angular部分,您在客户端验证问题而不会一直回到服务器,因此,您应该尽快防止此类问题。
快递,你需要验证,因为你不能相信你的前端。
在Mongo上,您需要验证访问权限,权限,要插入的数据等。
为什么要验证?
最常见的Web应用程序安全漏洞是失败 正确验证来自客户端或环境的输入。这种弱点 导致几乎所有应用程序中的主要漏洞,例如 作为解释器注入,语言环境/ Unicode攻击,文件系统攻击 和缓冲区溢出。永远不应该信任来自客户端的数据 客户端有可能篡改数据。
来自同一来源: