在服务器端(控制器)进行验证是一种很好的做法吗? ASP.NET MVC

时间:2017-09-14 12:12:05

标签: c# asp.net asp.net-mvc

客户端(浏览器)获得输入后,我需要在数据库上的服务器端上执行特定事务(业务逻辑)。

在进行交易之前,对用户输入进行验证是一种很好的做法吗?我是否违反了“单一责任原则”?

编辑:单一责任原则 - 我的不好,这里没有意义。

最好的问候。

3 个答案:

答案 0 :(得分:6)

有几个原因导致在服务器端进行验证是绝对必要的,尽管可能已经在客户端检查了输入:

  • 可能有不同的客户端与您的MVC应用程序通信 - 一旦通过身份验证,任何能够发送HTTP请求并处理响应的人都可以与您的后端通信。有人可能会编写跳过验证的代码,或者恶意推送不良数据。您的服务器端必须为此做好准备。
  • 您的客户端代码中可能存在错误 - 最终,您的服务器端代码负责数据的一致性。
  • 检查时间非常重要 - 系统状态可能会在请求到达您的服务器时发生变化。在一个典型的例子中,在客户端验证运行时可以提取100美元,但是当请求到达服务器时,其他人可能已经从账户中提取了这笔钱。

这不违反单一责任原则,因为客户端和服务器端验证有不同的用途。客户端验证可以向用户提供有效和无效的可视提示,而服务器端验证可以保持数据的一致性。

答案 1 :(得分:2)

  

在制作之前对用户输入进行验证是一种很好的做法   交易?

如果一个男人来到你家门口说他们是女王,你会让他进来吗?

同样,您应该验证服务器端 - 因为从您的客户端(浏览器)发送的数据不可信任。

答案 2 :(得分:1)

进行服务器端验证至关重要,因为客户端验证可以通过禁用JavaScript或使用fiddler或curl等工具来传递,另一方面如果你想拥有一个用户友好的应用客户端验证将是一个重要的工具。

Jquery validation是用于客户端验证的前端库

MVC Model Validation可以生成客户端和服务器端验证

Remote Attribute是一个有用的属性,可以让我看一下你认为的情况。