当我处理 AJAX 应用程序时,我会经常通过 POST 传递参数。应用程序的某些部分可能会发送相同数量的参数或相同的数据集,但根据我传递的自定义参数,它可能会做一些完全不同的事情(例如删除而不是插入或更新)。发送数据时,我通常会这样做:
$.post("somepage.php", {action: "complete", somedata: data, moredata: anotherdata}, function(data, status) {
if(status == "success") {
//do something
}
});
在应用程序的另一部分,我可能有类似的代码,但不是将操作属性设置为 deny
或某些应用程序特定的东西,而是触发代码在服务器端删除或移动数据。
我听说过可以修改 POST 请求和与之相关的数据的工具,但我只使用过一种名为 Tamper Data for Firefox 的工具。我知道有人修改 POST 请求的数据的机会很小,甚至更小,因为他们更改关键属性以使应用程序在后端执行不同的操作(例如更改 action: "complete"
到 action: "deny"
),但我确信它发生在对 Web 应用程序的日常攻击中。谁能提出一些避免这种篡改的好方法?我想到了几种方法,包括检查触发事件的操作是否错误并验证它以及其他所有内容,但我可以看到,对于需要的应用程序的每个部分来说,这都是额外的 100 行代码保护这些类型的请求。
最佳答案
您需要像处理普通请求一样授权客户端进行 AJAX 调用。只要用户有权做他想做的事,就不会有问题。 您还应该将存储在用户 session 中的身份验证 token 传递给 protect against CSRF .
关于javascript - POST 操作、篡改数据和 AJAX 安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8718562/