Может ли «плохой» пользователь изменить пост-запрос ajax? - PullRequest
0 голосов
/ 22 июня 2011

Вот абстрактный пример: 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 к запросу?

Ответы [ 2 ]

2 голосов
/ 22 июня 2011

Если some.php проверяет личность пользователя безопасным способом (например, с помощью чего-то, уже установленного в сеансе) и подтверждает, что пользователь действительно является администратором, прежде чем делать что-либо вообще с параметр 'user_id' - да, это должно быть безопасно.

1 голос
/ 22 июня 2011

Они могут изменять все запросы, которые им нужны, им все равно нужно физически войти на сервер, или ваш файл some.php может просто отклонить запрос как не прошедший проверку подлинности (используйте сеансы!).После проверки подлинности сервер знает, является ли пользователь администратором или нет, и может дополнительно проверить наличие у клиента надлежащих разрешений для запрошенной операции.

Система примерно так же безопасна, как вы ее делаетепринять непреднамеренную ошибку или два).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...