Похоже, вы напрямую передаете переменную строки запроса ?search[]
в свой SQL. mod_rewrite не исправит это для вас ... что если я решу вызвать вашу страницу с http://www.yoursite.com/search.php?search=;DROP TABLE users;
? Вы просто не можете использовать mod_rewrite, чтобы предсказать все плохие виды ввода, которые может придумать пользователь.
Ваш код должен выполнять проверку и очистку входных данных. Вы должны предположить, что все, что ваш скрипт получает от пользователя, является вредоносным и опасным. Включает все данные внутри $_GET
, $_POST
и $_COOKIE
.
Правильным решением здесь является проверка того, что $_GET['search']
является допустимым значением для передачи в ваш SQL. Что-то вроде:
if (is_string($_GET['search']) && ! empty($_GET['search']) {
//escape the input properly using your database-specific method, e.g.:
$searchParam = mysql_real_escape_string($_GET['search']);
//run your query with the escaped data
}
Как минимум, это обеспечит, чтобы передаваемая вами переменная поиска не была пустой строкой.