【问题标题】:Advantages of ASP.Net validation controls over JavaScriptASP.Net 验证控件优于 JavaScript 的优势
【发布时间】:2013-10-23 06:26:07
【问题描述】:

有人能解释一下使用 ASP.Net 验证控件和 javascript 进行客户端验证之间的区别吗?我的工作是分析开发人员创建的代码/我已经阅读了几篇文章,但实际上开发人员更喜欢 javascript 而不是使用验证控件。因此想了解使用 javascript 而不是验证控件的必要性。

【问题讨论】:

    标签: javascript asp.net validation


    【解决方案1】:

    不同之处在于 ASP.NET 客户端控件在服务器上执行验证,这是您应该始终执行的操作。客户端 javascript 验证是可选的。它允许响应更快的 UI,减少与服务器的往返次数,但它不提供任何级别的安全性,因为用户可以简单地在浏览器中关闭 javascript。除了服务器端之外,ASP.NET 控件还可以生成客户端验证。

    【讨论】:

    • 谢谢@Darin。我在许多情况下看到,即使是电子邮件验证,高级开发人员也选择了 javascript 而不是使用现有的验证器。如果使用可用的验证控件而不是使用 javascript 更安全,那么为什么开发人员更喜欢 javascript?
    • 高级开发者两者都用。他们从不只用 javascript 替换服务器端验证。如果他们这样做了,他们作为开发人员的资历就值得商榷了。
    • @DarinDimitrov asp.net 客户端控件如何在服务器上执行验证!!!!!!你是什​​么意思,这些控件不应该生成客户端javascript代码来验证他的用户输入吗??
    【解决方案2】:

    客户端

    您希望首先在客户端验证输入,因为您可以向普通用户提供更好的反馈。例如,如果他们输入了无效的电子邮件地址并移至下一个字段,您可以立即显示错误消息。这样,用户可以提交表单之前更正每个字段。

    如果您只在服务器上进行验证,他们必须提交表单、收到错误消息并尝试找出问题所在。

    (这种痛苦可以通过制作“粘性”表单来缓解,在该表单中服务器会记住每个字段中输入的内容并将其填回,但客户端验证仍然更快。)

    ASP.Net 控件验证(服务器端)

    您希望在服务器端进行验证,因为您可以防范恶意用户,他们可以轻松绕过您的 JavaScript 并向服务器提交危险输入。

    信任你的 UI 是非常危险的。 他们不仅会滥用您的 UI,而且可能根本不会使用您的 UI,甚至是浏览器。如果用户手动编辑 URL,或者运行他们自己的 Javascript,或者使用其他工具调整他们的 HTTP 请求怎么办?例如,如果他们从 curl 发送自定义 HTTP 请求怎么办?

    不允许这样做不仅从安全角度来看是幼稚的,而且也是不标准的:应该允许客户端以他们希望的任何方式发送 HTTP,并且您应该正确响应。这包括验证。

    服务器端验证对于兼容性也很重要 - 并非所有用户都会启用 JavaScript。

    【讨论】:

    • 以防万一不清楚,你应该同时做客户端和服务器端。如果必须选择一个,请选择服务器端。
    猜你喜欢
    • 2020-03-23
    • 2016-10-06
    • 1970-01-01
    • 2013-09-11
    • 2012-09-20
    • 1970-01-01
    • 2014-03-06
    • 2020-11-23
    相关资源
    最近更新 更多