Помогает ли правило перезаписи htaccess предотвратить SQL-инъекцию? - PullRequest
1 голос
/ 21 января 2011

У меня есть следующее правило в htaccess:

RewriteRule ^([a-zA-Z0-9\-\_]+)/?$ test.php?&url=$1 [L]

Мой вопрос такой:

Если у меня следующий URL http://www.example.com/this-is-a-title

Является ли $url переменная, подверженная внедрению SQL, или я не должен беспокоиться об этом, потому что RewriteRule допускает только буквы, цифры, тире и подчеркивание, а не кавычки, апострофы или знаки +?

Редактировать: Продолжить вопрос

Что происходит, если это URL?http://www.example.com/this'is"a+title

Когда я помещаю это в строку URL, я получаю ошибку 404, но то, что на самом деле происходит.Символы ' " + игнорируются или удаляются или что именно?

Ответы [ 3 ]

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

Вы всегда должны считать себя уязвимым для атаки с использованием SQL-инъекций, если вы не выполняете надлежащую очистку своих данных перед помещением их в запрос. Использование перезаписи .htaccess не является и никогда не должно рассматриваться как предотвращение внедрения SQL.

Используйте mysql_real_escape_string или pg_escape_string (если используется PHP) или используйте подготовленные операторы для всех запросов с использованием переменных из POST или GET. Всегда.

1 голос
/ 29 ноября 2011

Это зависит от самого скрипта. Вы можете использовать шестнадцатеричное кодирование ввода, например 0x2d3120756e696f6e2073656c656374202e2e2e2e. Если скрипт расшифрует его, ваш .htaccess не сможет вас защитить.

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

Теоретически, ни одна переменная не подлежит инъекции.Тем не менее, вы по-прежнему ВСЕГДА должны очищать ваши входы.Это просто лучшая практика, потому что если кому-то удастся атаковать сервер другим способом, ваш .htaccess может быть проигнорирован.

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