POST-манипуляции, Tamper Data и проблемы безопасности AJAX - PullRequest
1 голос
/ 04 января 2012

Часто, когда я работаю с приложениями AJAX, я передаю параметры через POST.Определенные части приложения могут отправлять одинаковое количество параметров или один и тот же набор данных, но в зависимости от передаваемого пользователем пользовательского параметра оно может делать что-то совершенно иное (например, удаление вместо вставки или обновления).При отправке данных я обычно делаю что-то вроде этого:

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

В другой части приложения у меня может быть похожий код, но вместо этого для свойства action устанавливается значение deny или что-то конкретное для приложения, которое будетвместо этого запускайте код для удаления или перемещения данных на стороне сервера.

Я слышал об инструментах, которые позволяют изменять запросы POST и связанные с ними данные, но я использовал только один такой инструмент, который называется Tamper Data.для Firefox.Я знаю, что шансы того, что кто-то изменит данные запроса POST, невелики, а еще меньше - изменить ключевое свойство, чтобы приложение делало что-то другое в бэкэнде (например, изменив action: "complete" на action: "deny"), ноЯ уверен, что это происходит в повседневных атаках на веб-приложения.Кто-нибудь может предложить несколько хороших способов избежать такого подделки?Я подумал о нескольких способах, которые состоят из проверки, является ли действие неправильным для инициируемого события, и проверки этого наряду со всем остальным, но я вижу, что это дополнительные 100 строк кода для каждой части приложения, которая нуждается вчтобы защитить такие запросы.

Ответы [ 2 ]

2 голосов
/ 04 января 2012

Вам необходимо авторизовать клиентов, выполняющих вызов AJAX, так же, как вы делаете это с обычными запросами.Пока пользователь имеет право делать то, что он пытается сделать, проблем не должно быть.Вы также должны передать токен аутентификации, который вы храните в сеансе пользователя, для защиты от CSRF .

0 голосов
/ 04 января 2012

Ваш сервер не может доверять ничему, что он получает от клиента.Вы можете начать устанавливать доверие, используя сеансы и аутентификацию (убедитесь, что пользователь является тем, кем она говорит), SSL / TLS (предотвратить несанкционированное вмешательство в сеть) и защиту XSRF (убедитесь, что действие было выполнено из созданного вами html) кака также позаботьтесь о том, чтобы предотвратить инъекцию XSS (убедитесь, что вы контролируете, как генерируется ваш HTML).Все эти вещи могут быть обработаны серверной средой хорошего качества, но есть еще много способов испортить.Поэтому вам, вероятно, следует предпринять шаги, чтобы убедиться, что пользователь не может сделать что-либо чрезмерно разрушительное для любой из сторон.

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