【问题标题】:jQuery validation for ASP.NET, security issuesASP.NET 的 jQuery 验证,安全问题
【发布时间】:2011-07-27 08:36:19
【问题描述】:

我想用 jQuery 验证替换 asp.net 表单验证,但不确定这是否安全。 ASP.NET 验证使用客户端和服务器端验证,通过禁用客户端 JS 验证来防止黑客发布到服务器。 如果我将使用客户端 jQuery 验证,那么它很容易被破坏,不是吗?也许我错过了什么?

【问题讨论】:

  • 感谢您的回答!所以使用 jQuery 验证没有任何优势。 ASP.NET 验证具有客户端和服务器端验证,我设置了客户端验证并获得了服务器端验证。那么在 ASP.NET 应用中使用 jQuery 验证有什么意义呢?
  • 他们已经告诉过您原因:改善用户体验。使用 jquery,您的网站看起来会更好

标签: asp.net validation jquery-validate


【解决方案1】:

您不应只使用客户端验证。它可以很容易地避免。人们通常将客户端验证用于用户体验。这样表单就不必写一个完整的帖子来发现错误。出于安全目的,您希望进行服务器端验证。

【讨论】:

    【解决方案2】:

    jQuery 验证与客户端 JS 验证完全相同。 jQuery 是 javascript 框架。

    始终使用服务器端验证,如果您想改善用户体验,请包括您的客户端验证。

    【讨论】:

      【解决方案3】:

      即使您在客户端验证数据,您也应该始终编写服务器端验证代码,否则您的网站将不安全并且很容易被黑客入侵。但是编写客户端验证的原因是为了避免到服务器的往返,否则需要验证数据。换句话说,如果用户输入了无效数据,那么在 before 中捕获错误会更加高效和友好 将数据发送到服务器,如果数据无效,您必须重建页面并维护页面状态,以便用户可以修复无效值。

      【讨论】:

        【解决方案4】:

        尝试使用 asp.net AJAX 加上服务器控件验证器作为您的验证框架,原因如下:

        1. 它是安全的,因为您的验证在服务器端运行
        2. 它更容易实现,因为您不必在服务器和客户端(javascript)中编写两次相同的代码
        3. 服务器端代码比客户端代码更容易维护
        4. 尽管您必须注意如何减少在每次部分回发中传输的数据,但您的网站看起来会响应。对此进行研究。
        5. 您与 asp.net sintax 相关联,您的开发人员也会喜欢它。您实际上不需要更多。

        建议:

        • 每次部分回发都失去焦点:更新面板内提交的表单的 DOM 部分被替换,浏览器没有为用户设置焦点。因此,请确保将焦点设置在正确的控件上,认为用户正在使用 TAB 键击输入数据。
        • 如果您想使用 css 自定义服务器验证器控件的外观,请尝试使用您自己的类继承主要验证器:Custom、Regex 和 requiredField,它们基本上设置和取消设置您想要每个服务器的错误 css 类和消息往返(在渲染之前设置)。然后将这些自定义类映射到 web.config 中的框架类(使用标记映射),因此您始终使用默认标记进行服务器端验证。您可以通过这种方式获得两全其美的效果。

        【讨论】:

          【解决方案5】:

          Jquery.validate.js

          https://github.com/jzaefferer/jquery-validation

          您可以将其设置为独立于您自己的客户端验证/而不是/或与之结合运行。

          【讨论】:

            猜你喜欢
            • 2012-03-22
            • 2012-11-22
            • 2016-05-21
            • 1970-01-01
            • 1970-01-01
            • 2013-03-15
            • 2012-06-16
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多