Очистить GET-запрос с помощью Apache - PullRequest
0 голосов
/ 02 января 2011

Я вижу, что здесь много говорят о том, как проводить очистку данных. Может ли это так же просто, как добавить это правило перезаписи в .htaccess?

RewriteRule ^([\w\-]+)$ index.php?page=$1

Насколько я понимаю, это позволит только буквы, цифры, _ и - в $ 1, я прав?

Если вы добавите к этому использованию подготовленные операторы для запросов SQL, это должно быть довольно убедительным доказательством, это правильно?

Каким-то образом кажется слишком легким, чтобы быть правдой, я что-то упустил, есть какие-нибудь способы это исправить?

Ответы [ 2 ]

1 голос
/ 02 января 2011

Вы можете захотеть исследовать, используя что-то вроде mod_security , если вы хотите что-то на уровне веб-сервера. Это поможет смягчить некоторые атаки - но окончательный уровень защиты должен быть сделан в самом PHP. Всегда будет атака, которая будет считаться «просто отличной» веб-сервером, но вызовет хаос в вашем приложении. Неважно, насколько хорошо вы заблокируете параметры запроса для предотвращения уязвимостей инъекций, вам будет что-то пропущено.

Так зачем тратить часы / дни своего времени на создание идеального RewriteRule, когда вы можете просто сделать mysql_real_escape_string() в PHP и поймать все прямо там?

1 голос
/ 02 января 2011

Если вы добавите к этому использованию подготовленные операторы для SQL-запросов, это должно быть довольно убедительным доказательством, верно?случаев.Подумайте, например, об умлаутах в строковых входах.Вам нужно будет разрешить некоторые не-ASCII символы для некоторых входных данных.Такие данные кодируются процентами в URL, поэтому вам придется начать отфильтровывать определенные символы, и даже это будет бесполезно для безопасности.Существует намного больше векторов атаки, чем просто инъекции в базу данных.

Для всех этих опасностей не существует метода санитарии "один размер подходит всем".Для каждого сценария (Использование в именах файлов; в выводе HTML; в выводе Javascript; в сообщениях электронной почты .....) существует один правильный путь.Отфильтровывать «недопустимые» символы на уровне веб-сервера на самом деле нецелесообразно - для идеальной безопасности вам придется заново создать все эти специальные функции очистки в синтаксисе Apache, что практически невозможно.

См. Также: PHP: максимальная чистая / безопасная функция

...