как переписать поиск [] на что-то другое с помощью htaccess - PullRequest
0 голосов
/ 11 января 2010

Я создал форму поиска с помощью метода get. Но когда URL выглядит так: search.php? Search [] или search? Search [] (mod_rewrite), тогда я получаю sql фатальную ошибку. Он передает массив, и я хочу избежать этой проблемы.

мой вопрос: как мне перенаправить человека с этого URL на search.php

1 Ответ

4 голосов
/ 11 января 2010

Похоже, вы напрямую передаете переменную строки запроса ?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
}

Как минимум, это обеспечит, чтобы передаваемая вами переменная поиска не была пустой строкой.

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