Angularjs 应在平均堆栈中的何处创建验证规则?

Angularjs 应在平均堆栈中的何处创建验证规则?,angularjs,node.js,mongodb,express,mean-stack,Angularjs,Node.js,Mongodb,Express,Mean Stack,我正在使用meanstack创建一个应用程序,它有许多表单数据条目,这些条目从经过身份验证的用户和匿名用户保存到数据库中 我应该在堆栈中的何处创建所有验证规则?他们应该在AngularJS吗?但我希望我的服务器端API是安全的,所以也许它们应该在Express中,然后被引导到AngularJS?或者,它们应该一直位于MongoDB层(我将使用Mongoose,因此很容易在那里创建验证) 目前,我把它们分散在各地,我发现自己在重复规则。我希望避免这种情况,并在一个地方创建规则。那么,在MVW应用程

我正在使用meanstack创建一个应用程序,它有许多表单数据条目,这些条目从经过身份验证的用户和匿名用户保存到数据库中

我应该在堆栈中的何处创建所有验证规则?他们应该在AngularJS吗?但我希望我的服务器端API是安全的,所以也许它们应该在Express中,然后被引导到AngularJS?或者,它们应该一直位于MongoDB层(我将使用Mongoose,因此很容易在那里创建验证)


目前,我把它们分散在各地,我发现自己在重复规则。我希望避免这种情况,并在一个地方创建规则。那么,在MVW应用程序中定义验证的一般规则是什么,最好将它们放在哪一层(特别是对于普通应用程序)?

根据OWASP建议

在哪里包括验证 必须在每一层上执行验证。但是,应根据执行代码的服务器的功能执行验证。例如,web/表示层应验证web相关问题,持久性层应验证SQL/HQL注入等持久性问题,目录查找应检查LDAP注入等

你需要到处验证

在角度部分,您在客户端验证问题,而无需返回服务器,因此,您应该尽早防止此类问题

在express上,您需要验证,因为您无法信任前端

在Mongo上,您需要验证访问、权限、要插入的数据等

为什么要验证

最常见的web应用程序安全弱点是无法 正确验证来自客户端或环境的输入。这个弱点 导致应用程序中几乎所有的主要漏洞,例如 作为解释器注入、区域设置/Unicode攻击、文件系统攻击 和缓冲区溢出。来自客户端的数据永远不应被信任 客户完全有可能篡改数据

来自同一来源: