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

C# 在服务器端(控制器)进行验证是一种好的做法吗?ASP.NETMVC,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,有了来自客户端(浏览器)的输入,我需要在服务器端、特定数据库(业务逻辑)上执行事务 在进行交易之前对用户输入进行验证是否是一种好的做法?我是否违反了“单一责任原则” 编辑:单一责任原则-我的错,这在这里没有意义 致以最良好的祝愿 这是一个很好的做法,在做出决定之前对用户输入进行验证 交易 对 如果一个男人来到你家门口说他们是女王,你会让他进来吗 同样,您应该验证服务器端-因为从客户端(浏览器)发送的数据不可信。尽管输入可能已在客户端检查,但在服务器端进行验证是绝对必要的,有几个原因: 可能有不

有了来自客户端(浏览器)的输入,我需要在服务器端、特定数据库(业务逻辑)上执行事务

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

编辑:单一责任原则-我的错,这在这里没有意义

致以最良好的祝愿

这是一个很好的做法,在做出决定之前对用户输入进行验证 交易

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


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

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

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

这并不违反单一责任原则,因为客户端和服务器端验证服务于不同的目的。客户端验证可以作为一种视觉提示,向用户提示什么是有效的,什么是无效的,而服务器端验证可以保持数据的一致性。

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

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

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


我认为,这是一个有用的属性,可以用来查看您的案例。

您的问题非常接近于一个基于意见的问题,顺便说一句,是的,这是一个很好的做法,不信任客户应该是第一条规则;单一责任原则是另一个概念,但它不仅是良好实践,而且是必不可少的。任何人都可以轻易地通过客户端验证(你只应该考虑客户端验证作为一个不错的奖励)。