首先,我得到了人们想要使用存储过程,以便他们重用查询并进行转义处理.但是,我看过许多开发人员说mysqli_real_escape_string不能100%阻止SQL注入.有人可以提供一个例子吗?
从我关于这个问题的知识有限,我会说,mysqli_real_escape_string会永远被罚款字符串而是数值你可能会被抓出来,除非你核对一下电话号码是一个整数,浮点,双等.
编辑:我忘了添加一些关键的东西:假设字符集是UTF8并且相应地调用了mysqli_set_charset.我见过的唯一一次注射依赖于一些charsets(其中没有一个是UTF8).
只要您使用mysqli_set_charset()设置客户端编码,并且mysqli_real_escape_string()仅用于格式化字符串,它就非常安全.
但是,如果您的问题暗示在应用程序代码中使用此函数,而不是基于占位符的查询的幕后处理,或者至少以PDO的quote()类似函数的形式(它同时进行转义和引用),它是直接注射方式.
功能本身不是问题,而是它的使用方式:
这就是为什么你必须总是使用占位符来表示查询中的数据(而mysqli_real_escape_string可以用来处理这个占位符)
| 归档时间: |
|
| 查看次数: |
2794 次 |
| 最近记录: |