Почему mysqli_real_escape_string () не меняет мою строку, избегая точек с запятой и косой черты? - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть следующий код, который я использую для грубой идентификации машины:

$computerId = "UserAgent:".$_SERVER['HTTP_USER_AGENT']."RemoteAddress:".$_SERVER['REMOTE_ADDR'];

Я использую следующий код для сравнения экранированной и неэкранированной строки:

echo "Unescaped:<br>".$computerId."<br>Escaped:<br>".mysqli_real_escape_string($conn, $computerId);

Это вывод, который я получаю:

Unescaped: UserAgent: Mozilla / 5.0 (Windows NT 10.0; Win64; x64)

Сбежавший: UserAgent: Mozilla / 5.0 (Windows NT 10.0; Win64; x64)

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

1 Ответ

0 голосов
/ 05 сентября 2018

Согласно документации

http://php.net/manual/en/function.mysql-real-escape-string.php

mysql_real_escape_string () вызывает библиотечную функцию MySQL mysql_real_escape_string, которая добавляет обратную косую черту к следующим символам: \ x00, \ n, \ r, \, ', "и \ x1a.

Следовательно, точка с запятой (;) не является символом, который экранируется (или добавляется) функцией.

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