这里是一个抽象的例子: 2种类型的用户(user
和admin
)有一些数据,他们可以改变他们的配置文件页面。用户是否可以修改ajax发布请求?
user
只能更改自己的数据,但admin
可以更改任何user
的数据。
在管理员的简介页有这样的代码:
$.ajax({
type: "POST",
url: "some.php",
data: {
'action' : 'data_change',
'user_id': $("#user_id").val()
},
success: function(msg){
alert("Data Saved: " + msg);
}
});
但在个人资料页面的用户有这样的代码:
$.ajax({
type: "POST",
url: "some.php",
data: {
'action' : 'my_data_change'
},
success: function(msg){
alert("Data Saved: " + msg);
}
});
这里,例如my_data_change
动作(PHP函数)从会话中获取用户标识。
安全吗?例如,一些“不良用户”曾经是管理员,但现在是用户。所以他可能知道如何发送请求(可能喜欢看萤火虫)。事实证明,通过简单的请求修改,任何用户都可以修改其他用户的数据。
但是真的要从浏览器本地修改请求吗?在这个例子中,是否真的要将my_data_change
动作更改为data_change
并添加user_id
参数来请求?