Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery POST方法、Ajax和安全性?_Jquery_Ajax_Security_Http Post - Fatal编程技术网

Jquery POST方法、Ajax和安全性?

Jquery POST方法、Ajax和安全性?,jquery,ajax,security,http-post,Jquery,Ajax,Security,Http Post,我使用Ajax(jQuery)和POST方法更新数据库中的数据。我做了以下工作: 从表单中获取数据:用户id、条目id、内容 将它们发送到将处理数据的URL 如果数据有效,我们将在数据库中记录它们 我不知道如何验证用户是否从我的网站而不是其他地方发送数据。请帮我解决这个问题。谢谢 您正试图抵御攻击 标准的防御措施是在POST中使用一个从不同AJAX请求检索的令牌。由于浏览器的跨域防御,您域之外的Javascript将无法获得令牌。这里有几个问题: 执行操作的用户的身份验证和授权 防止CSRF

我使用Ajax(jQuery)和POST方法更新数据库中的数据。我做了以下工作:

  • 从表单中获取数据:用户id、条目id、内容
  • 将它们发送到将处理数据的URL
  • 如果数据有效,我们将在数据库中记录它们

我不知道如何验证用户是否从我的网站而不是其他地方发送数据。请帮我解决这个问题。谢谢

您正试图抵御攻击


标准的防御措施是在POST中使用一个从不同AJAX请求检索的令牌。由于浏览器的跨域防御,您域之外的Javascript将无法获得令牌。

这里有几个问题:

  • 执行操作的用户的身份验证和授权
  • 防止CSRF
  • 决定你需要做什么。第一个应该能够通过cookie、HTTP身份验证(浏览器也会为AJAX请求发送HTTP身份验证)或一些自定义方法(例如,包含身份验证的额外参数)来处理

    CSRF是一个不同的问题,但是您可以通过确保请求确实是通过AJAX而不是通过普通表单post传入的,从而很容易地避免它。这应该可以通过附加一个额外的头来实现,而这个头不能通过制作HTTP表单来添加(注意:不是所有的头都可以通过Javascript添加,请尝试使用X头)


    另一种可能是不使用表单编码的帖子;如果您希望正文中包含一个JSON对象,该对象不能来自其他站点,因为浏览器通常不会通过HTTP POST发送它。

    +1开头,-1最后两段:您需要防御基于HTTP但不一定基于浏览器的攻击。我们不能假设任何理论上的攻击者只会使用浏览器。例如,链接垃圾邮件发送者远比这先进。跨站点请求伪造是指合法用户被诱骗使用他们自己的浏览器(带有身份验证和cookie)发出非预期请求。使用基于非表单的帖子或自定义标题可以避免这种特定攻击。他们可以运行bot来获取令牌。所以我认为最好的办法是把cookie也包括在内,另外,如果你不想受到攻击,就去验证码。@Duccha:你在说什么?