|
|
|
| Доброго времени суток.
Снова про SQL-иньекции... Вот какой вопрос меня волнует: есть обычное текстовое поле и страница поиска на сайте. Проверять (по понятным причинам) соответствие переменной, содержащей ключевое слово, целочисленному типу нельзя. Получается что в это поле можно запихнуть вообще все что угодно, и это все попадет непосредственно в SQL-запрос;
...WHERE text LIKE '%все что угодно%'
|
или так
...WHERE text = 'все что угодно'
|
заметьте, что в ключевом слове присутствуют пробелы.
Но т.к. каждый второй сайт не оказывается сломаным, получается - я чего то не понимаю. Объясните пожалусто. | |
|
|
|
|
|
|
|
для: new_user
(10.02.2009 в 10:58)
| | А чем могут помешать пробелы?
Текст, с которым в данном случае выполняется сравнение, окружен апострофами.
Если позволить помещать внутрь запроса тест с апострофами в сыром виде - да, окажется уязвимость к инъекции.
Поэтому их (апотрофы, кавычки, некоторые другие символы) предваряют обратным слэшем \ .
Делают это при помощи фнкции mysql_escape_sting() непосредственно перед тем, как окружить строу апострофами. | |
|
|
|
|
|
|
|
для: Trianon
(10.02.2009 в 11:18)
| | С экранированием спец. символов знаком))), просто уже паранойя развивается. Большое спасибо, что успокоили. Правда спасибо. | |
|
|
|