Часто, когда я работаю с приложениями 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 строк кода для каждой части приложения, которая нуждается вчтобы защитить такие запросы.