在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攻击,文件系统攻击和缓冲区溢出。 来自客户端的数据不应该被信任,因为客户端有可能篡改数据。

来自同一个来源:

https://www.owasp.org/index.php/Data_Validation