Вот абстрактный пример: 2 типа пользователей (user
и admin
) имеют некоторые данные, которые они могут изменить на своей странице профиля .
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
action (функция php) получает идентификатор пользователя из сеанса.
Это безопасно?Например, какой-то «плохой пользователь» раньше был администратором, но теперь это пользователь.Поэтому он может знать, как отправить запрос (может быть, любит смотреть в firebug).Оказывается, что с легким изменением запроса любой пользователь может изменять данные другого пользователя.
Но действительно ли это локально изменять запрос из браузера?В этом примере действительно ли нужно изменить действие my_data_change
на data_change
и добавить параметр user_id
к запросу?