POST方法,Ajax和安全性?

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

  • 从表单中获取数据:user_id,entry_id,content,…
  • 将它们发送到将处理数据的URL。
  • 如果数据有效,我们会将它们记录在我们的数据库中。

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

你正试图抵御CSRF攻击。

标准防御是在POST中要求一个令牌,该令牌是从不同的AJAX请求中检索的。 由于浏览器的跨域防御,域外的Javascript将无法获取令牌。

这里有几个问题:

  1. 正在执行操作的用户的身份validation和授权
  2. 防止CSRF。

决定你需要做什么。 第一个应该能够通过cookie,HTTP身份validation(浏览器为AJAX请求发送)或某些自定义方法(例如包含身份validation的额外参数)来处理

CSRF是另一回事,但你可以通过确保请求真正通过AJAX而不是通过普通的表格post来避免它。 这应该可以通过添加某个人无法通过制作HTTP表单添加的额外标头来实现(注意:并非所有标头都可以通过Javascript添加,请尝试使用X-Header)。

另一种可能性是首先不使用表格编码的post; 如果您期望正文中的JSON对象不能来自其他网站,因为浏览器通常不会通过HTTP POST发送它。