栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

mysql_real_escape_string的缺点?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mysql_real_escape_string的缺点?

mysql_real_escape_string
一般而言,或mysql_扩展名的主要缺点是,与其他更现代的API(尤其是准备好的语句)相比,要正确地应用它比较困难。
mysql_real_escape_string
应该仅在一种情况下使用:转义用作引号之间SQL语句中的值的文本内容。例如:

$value = mysql_real_escape_string($value, $link);$sql = "... `foo` = '$value' ...";          ^^^^^^

mysql_real_escape_string
确保
$value
上述上下文中的不会弄乱SQL语法。它不起作用,您可能会在这里想到:

$sql = "... `foo` = $value ...";

或在这里:

$sql = "... `$value` ...";

或在这里:

$sql = mysql_real_escape_string("... `foo` = '$value' ...");

如果将其应用于在除SQL语句中带引号的字符串之外的任何上下文中使用的值,它将被错误地使用,并且可能会或可能不会干扰所得的语法和/或允许某些人提交可能启用SQL注入攻击的值。的用例

mysql_real_escape_string
非常狭窄,但很少能正确理解。

使自己陷入困境的另一种方法

mysql_real_escape_string
是使用错误的方法设置数据库连接编码。你应该做这个:

mysql_set_charset('utf8', $link);

可以这样做:

mysql_query("SET NAMES 'utf8'", $link);

问题是后者绕过了mysql_
API,后者仍然认为您正在使用

latin1
(或其他方式)与数据库进行通信。
mysql_real_escape_string
现在使用时,它将假定错误的字符编码和转义字符串与数据库稍后解释它们的方式不同。通过运行
SETNAMES
查询,您在mysql_客户端API如何处理字符串与数据库如何解释这些字符串之间创建了一条裂痕。这可以用于某些多字节字符串情况下的注入攻击。

mysql_real_escape_string
我知道, 如果正确应用 没有基本的注入漏洞
同样,主要问题是,错误地应用它非常容易,这会带来漏洞。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/465865.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号