【发布时间】:2016-01-03 22:28:07
【问题描述】:
我正在创建一个 ASP.NET 应用程序,我想知道 ASP.NET 上的验证控件在哪里运行?在服务器上还是在客户端机器上?
我是否应该考虑改用 JavaScript 对我的项目执行简单的表单验证?
【问题讨论】:
-
有些可能同时运行,但都应该在服务器端运行。您可以考虑使用 JavaScript 来改进用户体验,但任何实际验证都应在服务器端完成。永远不要隐含地信任来自客户端的数据。
我正在创建一个 ASP.NET 应用程序,我想知道 ASP.NET 上的验证控件在哪里运行?在服务器上还是在客户端机器上?
我是否应该考虑改用 JavaScript 对我的项目执行简单的表单验证?
【问题讨论】:
为什么不两者都做?出于安全目的,您绝对需要在后端代码(C#/ASP.NET)中进行用户输入验证,同时,如果他们在填写表单时获得实时验证(Angular/ JS)。
【讨论】:
自 ASP.NET 2.0 以来的任何内容都将在页面上运行服务器端检查,以通过使用后面代码中 Form_Load 属性中的 .IsValid() 检查任何验证器控件(运行服务器端)来确保其有效.这个过程需要回发到服务器,这意味着如果他们错过了一些简单的事情,比如填写姓名字段,他们必须首先提交表单,这不是高性能而且有时成本很高。
控件上有一个名为“EnableClientScript”的验证器属性,它将运行一个 javascript 函数来验证简单的事情,例如缺少字段信息,甚至是对电话号码或电子邮件地址等内容的 reg ex 检查。
David 也是正确的,您仍然要验证此输入。最好的策略是针对任何无意或恶意的尝试进行防御性编码,尤其是在您拥有面向公众的网站时。
【讨论】: