当我处理ajax应用程序时,经常会通过post传递参数。应用程序的某些部分可能发送相同数量的参数或相同的数据集,但根据我传递的自定义参数,它可能执行完全不同的操作(例如删除而不是插入或更新)。发送数据时,我通常会执行以下操作:

$.post("somepage.php", {action: "complete", somedata: data, moredata: anotherdata}, function(data, status) {
    if(status == "success") {
        //do something
    }
});

在应用程序的另一部分,我可能有类似的代码,但是将action属性设置为deny或特定于应用程序的某些内容,这些内容将触发代码来删除或移动服务器端的数据。
我听说有一些工具可以让你修改post请求以及与之相关的数据,但是我只使用了一个叫做tamper data for firefox的工具。我知道有人修改post请求的数据的可能性很小,而且他们更改密钥属性以使应用程序在后端做一些不同的事情(例如将action: "complete"更改为action: "deny")的可能性更小,但我相信在对web应用程序的日常攻击中会发生这种情况。有人能提出一些避免这种篡改的好方法吗?我考虑了一些方法,包括检查被触发的事件的操作是否错误,并与其他所有东西一起验证该操作,但是我可以看到,对于需要保护此类请求的应用程序的每个部分,都需要额外的100行代码。

最佳答案

您需要授权进行ajax调用的客户机,就像处理普通请求一样。只要用户有权做他想做的事情,就应该没有问题。
您还应该将存储在用户会话中的身份验证令牌传递给protect against CSRF

10-05 20:53
查看更多