2011-10-04 82 views
4

假设我有一个形式,我想阻止用户验证之前submiting形式, 让我使用event.preventDefault()中的onsubmit:Ajax提交表单安全性?

// In my validation.js 

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

这里你可以看到,用户可以编辑在preventDefault()行后的validaiton代码。他们通过验证(仅适用于客户端)

是什么力量让与客户端验证表单“AJAX”更安全的方法是什么? 我也有服务器端验证,但我只想问如何让客户端更难以破解和更安全?

回答

1

这是从来没有“更可靠”或“更安全”。 JS可以被禁止,并且在客户端不会进行验证。

+0

遐,确实:(。 情况是我做了一个Ajax网站,我只是想知道我可以做JavaScript的“更安全”。 如果只使用服务器验证,然后我需要编写一个Ajax调用函数提交表单,但他们可以很容易破解的Ajax调用,我的意思是,他们阻止了ajax提交的行动。你可以建议如何避免这种情况?谢谢 – hanhp

0

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

  • 你不能有一个提交按钮,只是一个普通的按钮,只允许表单提交与JS做绑定到按钮的点击在JS提交启用。
  • 您可以缩小/隐藏JS以加大编辑的难度。
  • 您可以通过服务器 请求一个短时间有效的密钥,然后 与表单一起提交,以便服务器端可以验证提交的可能性更高来自你的有效javascript。
+0

感谢您发表评论,只是想知道关于第一个子弹。 如果恶意用户改变正常按钮提交按钮(萤火虫再次),那么他们可以很容易地通过一个如何防止? (不是全部,但更难) – hanhp

0

您应该复制服务器上的所有客户端验证。 如果使用.NET,更好的解决方案是使用Dataannotaion来装饰具有Required,Range,Regularexpression属性的实体类。这些属性可以验证客户端使用jquery.unobtrusive.validate,然后在服务器端使用ModelState.IsValid()