我使用Ajax (jQuery)和POST方法更新数据库中的数据。我所做的工作如下:
我不知道如何验证用户是否从我的网站,而不是从其他地方发送数据。请帮我解决这个问题。谢谢!
发布于 2009-12-20 15:39:53
你在试图抵御CSRF的攻击。
标准的防御措施是在POST中有一个请求令牌,从不同的AJAX请求中检索该令牌。由于浏览器的跨域防御,您域之外的Javascript将无法获得令牌。
发布于 2009-12-20 15:46:57
这里有几个问题:
决定你该做什么。第一个应该能够通过cookie、HTTP身份验证(浏览器也发送给AJAX请求)或一些自定义方法(例如包含身份验证的额外参数)来处理。
CSRF是另一回事,但是您可以很容易地避免它,方法是确保请求真的是通过AJAX传入的,而不是通过普通的表单发布。这应该是可以实现的,通过附加一个额外的标题,有些人不能通过创建HTTP表单来添加(注意:并非所有的标题都可以由Javascript添加,尝试使用X头)。
另一种可能是首先不使用表单编码的post;如果您期望正文中有JSON对象,则不能来自另一个站点,因为浏览器通常不会通过HTTP POST发送JSON对象。
https://stackoverflow.com/questions/1936146
复制相似问题