2011-02-03 2 views
2

У меня есть сценарий, который использует переменную $ _POST для хранения в базе данных.как предотвратить взломать метод POST

Есть некоторые пользователи, которые пытаются обмануть систему, создав свой собственный метод почтовой формы или используя curl для отправки переменной post и значения на сервер.

Как предотвратить эту атаку?

Спасибо

ответ

4

Предупреждение невозможно (POST является безопасным мифом упрощения). Вы должны проверить входящие данные с различными методами:

  • CSRF токены помощи против произвольных форм представления бот (но не против Handicrafted фальсификации)
  • enumarate ожидаемых значений формы, утверждают(), что все они присутствуют и нет посторонние поля отображаются
  • дезинфицировать и фильтровать ожидаемые значения. Я использую $_POST->text->in_array("field", "abc,def,xyz"), например
+0

+1. И дополнительно ресурс о обработке формы: http://phpsec.org/projects/guide/2.html – singles

+0

@singles: Это отличная ссылка и более авторитетный ответ. – mario

0

Там нет никакого способа, чтобы остановить людей, делающих произвольные запросы HTTP.

Как вы защищаете себя, зависит от содержания запроса и почему он представляет собой атаку.

-1

Эта атака имеет имя «SQL-инъекция». Это не слишком сложно защитить от этого. Просто используйте magic_quotes, если ваше значение является строкой и использует фильтр, ведьма пропускает номера onlu, если ваше значение является числом.

+1

Магические котировки недостаточны для защиты от SQL-инъекций. Вопрос не дает достаточной информации, чтобы сделать вывод, что атака - это SQL Injection, это может быть XSS, «лежащий вокруг моего счета», «Заполнение моего форума спамом» или что-то еще. – Quentin

0

Вы можете убедиться, что POST производится из вашей формы с помощью Capcha вида защиты или Вы можете дезинфицировать каждую переменную $ _POST и отвергают целые данные POST, если он не удовлетворяет критериям.

Смежные вопросы