Рекомендации по написанию функции для предотвращения внедрения SQL - PullRequest
0 голосов
/ 29 октября 2011

Я ищу написать функцию, которая будет объединять это:

mysql_real_escape_string(htmlentities(trim($_POST[''])));

в это:

secFunction($_POST['']);

для упрощения вещей. не совсем уверен, как идти о написании этого все же. совет? :)

Ответы [ 3 ]

1 голос
/ 29 октября 2011

Вы имеете в виду что-то подобное?

function secFunction($string) {
  return mysql_real_escape_string(htmlentities(trim($string)));
}

$clean_string = secFunction($_POST['something']);
0 голосов
/ 14 января 2012

экранирование с mysql_real_escape_string не предотвращает инъекции.

и htmlentities не имеет ничего общего с уколами вообще.

и эти функции никогда не должны сочетаться.

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

0 голосов
/ 29 октября 2011

Это функция, которую я люблю использовать для экранирования строк для SQL.

function escape($data) {
    $magicQuotes = get_magic_quotes_gpc();

    if(function_exists('mysql_real_escape_string')) {
        if($magicQuotes) {
            $data = stripslashes($data);
        }

        $data = mysql_real_escape_string($data);
    }
    else {
        if(!$magicQuotes) {
            $data = addslashes($data);
        }
    }

    return $data;
}

Затем вы можете использовать ее так:

$myString = isset($_POST['key']) ? escape($_POST['key']) : '';

Вы можете добавить htmlentities и trimесли хочешь, но я предпочитаю делать это отдельно.

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