【问题标题】:Ajax submit form security?Ajax 提交表单的安全性?
【发布时间】:2014-12-15 16:22:22
【问题描述】:

假设我有一个表单,我想阻止用户在验证之前提交表单, 所以我在 onsubmit 中使用 event.preventDefault() :

// In my validation.js

$('#myForm').bind('submit', function(event){
   event.preventDefault();
   // I do the client-side validation here
});

您可以在这里看到,用户可以在 preventDefault() 行之后编辑验证代码。他们通过了验证(仅限客户端)

使用客户端验证制作表单“ajax”更安全的方法是什么? 我也有服务器端验证,但我只想问如何让客户端更难破解和更安全?

【问题讨论】:

    标签: jquery ajax security


    【解决方案1】:

    它永远不会“更可靠”或“更安全”。 JS 可以被禁止,并且在客户端不会有验证。

    【讨论】:

    • 是的,确实 :(。情况是我正在制作一个 ajax 网站,我只是想知道我能否让 javascript“更安全”。如果只使用服务器验证,那么我需要编写一个ajax 调用函数来提交表单,但是他们可以很容易地破解 ajax 调用,我的意思是他们阻止了 ajax 提交操作。你能建议如何防止这种情况吗?谢谢
    【解决方案2】:

    你不能让它完全安全客户端,但你可以提高安全性。您可以做的其他事情包括:

    • 你不能有一个提交按钮,只有一个普通按钮,只允许通过在 JS 中执行绑定到单击按钮的提交来启用 JS 的表单提交。
    • 您可以缩小/模糊 JS 以增加编辑难度。
    • 您可以对服务器执行提交前身份验证检查 请求在短时间内有效的密钥,然后 与表单一起提交,以便服务器端可以验证 提交更有可能来自您的有效 javascript。

    【讨论】:

    • 感谢您的评论,只是想知道第一个项目符号。如果恶意用户将正常按钮更改为提交按钮(再次使用 Firebug),那么他们可以轻松通过那个按钮。如何防止这种情况? (不是全部,但让它更难)
    【解决方案3】:

    您应该在服务器上复制所有客户端验证。 如果使用 .NET,更好的解决方案是使用 Dataannotaion 来装饰您的实体类,其中包含必需、范围、正则表达式属性。这些属性可以在客户端使用 jquery.unobtrusive.validate 进行验证,然后在服务器端使用 ModelState.IsValid()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 2023-04-02
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      相关资源
      最近更新 更多