PHP может (должен) I array_map filter_var в $ _POST - PullRequest
0 голосов
/ 19 января 2011

Я только что наткнулся на этот аккуратный кусок кода, чтобы быстро отфильтровать $_POST данные:

$post=array_map("filter_data",$_POST);

Я обновил его до новой версии (после PHP 5.2) и получил

$post=array_map("filter_var",$_POST,array(516));  // 516 == 'unsafe_raw'

Теперь я параноик; это кажется слишком простым. Так

  • Должен ли я не сделать это для всех post данных? (бегающие нервные глаза)
  • Является ли unsafe_raw правильным фильтром для общих post, get или данных cookie?

Я должен добавить, что я просто пытаюсь использовать обычное дезинфицирующее средство, главным образом для удаления инъекций SQL. Если у меня есть адрес электронной почты или что-то еще, я могу отфильтровать позже. Какие-нибудь идеи / предложения / испуганные взгляды?

1 Ответ

2 голосов
/ 19 января 2011

Чтобы избежать внедрения SQL, всегда используйте соответствующие функции для вашей базы данных непосредственно перед вставкой значения в строку запроса, например, mysql_real_escape_string. Общий фильтр, не относящийся к вашей базе данных, ничего не гарантирует и, вероятно, будет фильтровать только слишком много.

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

Также используйте константу FILTER_UNSAFE_RAW, а не ее числовое значение.

...