【问题标题】:Client side validation of a post request?发布请求的客户端验证?
【发布时间】:2011-03-20 00:44:04
【问题描述】:

我在页面上有一个文本框,当用户单击“提交”时,我抓取文本字段并使用 jQuery 将其发布如下:

$("#text_submit").submit(function(event)){
    user_text = $("input#user_text").val();
    $.post("/create/", { text : user_text }, function(data){
         //display response from server on the page;
    });
    event.preventDefault();
});

然后在服务器端验证文本(应该是 URL)并返回响应。

将用户在文本框中输入的任何内容发布到服务器是否安全?我需要对用户的文本进行任何客户端验证吗?

【问题讨论】:

  • 这不是安全问题。所有安全验证都必须在服务器端完成。

标签: jquery validation post


【解决方案1】:

我不同意上述关于服务器端是双重检查或次要措施的帖子。服务器端验证是唯一的措施。可以绕过客户端验证。可以禁用 Javascript。

我认为客户端验证对用户更有帮助。它可以避免因简单的格式错误的数据错误而不得不 POST,并就错误向用户提供即时反馈。

不过,为了安全起见,您可以依赖服务器端验证。

另见:JavaScript: client-side vs. server-side validation

【讨论】:

  • 谢谢 - 我也是这么想的。我还刚刚发现了 HTML5 表单验证 - 这将对大部分用户有所帮助。
  • 客户端验证肯定有它的作用,但恕我直言,服务器端才是最重要的。这是一个很酷的工具,它充当代理并允许您修改 POST 值,绕过 javascript 验证:owasp.org/index.php/Category:OWASP_WebScarab_Project
【解决方案2】:

这取决于内容是什么以及您要如何验证它。如果关闭了 javascript,我总是会先在客户端验证,然后在服务器上验证作为辅助措施。

【讨论】:

  • 如果 JavaScript 被关闭,你就不能真正使用 AJAX... ;)
  • @yc 是的,但您仍然可以发送自定义请求。比如tamperdata/burp。
【解决方案3】:

作为一般经验法则(至少在安全方面),您不应该信任任何用户,所以我认为在客户端验证数据(它也更快)然后,如果第一次验证通过,这将是明智的选择,在服务器端验证它,以“仔细检查”(或者如果用户关闭了 Javascript,则有一个安全网,这是你不经常看到的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-21
    • 2015-12-17
    • 2020-10-10
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多