2011-06-22 45 views
0

这里是一个抽象的例子: 2种类型的用户(useradmin)有一些数据,他们可以改变他们的配置文件页面用户是否可以修改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参数来请求?

回答

1

他们可以修改所有他们想要的请求,他们仍然需要物理登录到服务器,或者您的文件可以简单地拒绝请求作为未经身份验证(使用会话!)。一旦通过身份验证,服务器就知道用户是否是管理员,并且可以进一步检查客户端是否具有所请求操作的适当权限。

该系统与您所做的一样安全(给予或带来一个无意识的错误或两个错误)。

2

如果some.php以安全的方式检查用户的身份(例如,通过会话中已经建立的东西),并确认用户确实是管理员,然后再做任何事情与'user_id '参数 - 是的,它应该是安全的。

相关问题