为什么mysqli_real_escape_string()不会通过转义分号和斜杠来改变我的字符串?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么mysqli_real_escape_string()不会通过转义分号和斜杠来改变我的字符串?相关的知识,希望对你有一定的参考价值。
我有以下代码用于粗略识别机器:
$computerId = "UserAgent:".$_SERVER['HTTP_USER_AGENT']."RemoteAddress:".$_SERVER['REMOTE_ADDR'];
我使用以下代码来比较转义与未转义的字符串:
echo "Unescaped:
".$computerId."
Escaped:
".mysqli_real_escape_string($conn, $computerId);
这是我得到的输出:
未转义:UserAgent:Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(Khtml,与Gecko一样)Chrome / 68.0.3440.106 Safari / 537.36RemoteAddress ::: 1
转义:UserAgent:Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 68.0.3440.106 Safari / 537.36RemoteAddress ::: 1
正如你所看到的,它们是完全相同的,并且它看起来不像逃逸正在做任何事情,因为两个字符串都包含未转义的反斜杠和分号。可能是什么导致了这个?
根据文件
http://php.net/manual/en/function.mysql-real-escape-string.php
mysql_real_escape_string()调用MySQL的库函数mysql_real_escape_string,它将反斜杠添加到以下字符: x00, n, r,,',“和 x1a。
因此,分号(;)不是由函数转义(或前置)的字符。
以上是关于为什么mysqli_real_escape_string()不会通过转义分号和斜杠来改变我的字符串?的主要内容,如果未能解决你的问题,请参考以下文章
警告:mysqli_real_escape_string() 需要 2 个参数,1 个给定...我做错了啥? [复制]
警告:mysqli_real_escape_string() 需要 2 个参数,1 个给定...我做错了啥? [复制]
“mysqli_real_escape_string”是不是足以避免 SQL 注入或其他 SQL 攻击?
mysqli_real_escape_string 如何无法阻止 SQL 注入? [复制]