gpt4 book ai didi

php - htmlspecialchars 是否足以防止对用单引号引起来的变量进行 SQL 注入(inject)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:55:45 31 4
gpt4 key购买 nike

尽管许多来源引用带有 ENT_QUOTEShtmlspecialchars 函数不足以防止 SQL 注入(inject),但它们都没有提供证明概念。我自己想不出任何可能性。

让我们考虑以下示例:

$username = htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8');
$sql = "SELECT * from user WHERE name='$username'";
mysql_query($sql,...);

除了SQL injection gets around mysql_real_escape_string() 的情况之外,任何人都可以提供一个例子吗? ?

最佳答案

htmlspecialchars 未能对关键字符\0(NUL 字节)、\b(退格)进行编码的字符,以及\ 字符。

为了利用它,您需要一个包含多个注入(inject)点的语句。有了这个,您可以转义一个字符串文字的结束定界符,从而将其扩展到下一个字符串文字的下一个起始定界符。然后可以将每个带有注入(inject)点的三个字符串文字转换为两个字符串文字。

例如:

SELECT * from user WHERE (name='$login' OR email='$login') AND password='$password'

现在具有以下值:

login:    ) OR 1=1 /*\
password: */--

结果语句如下所示:

SELECT * from user WHERE (name=') OR 1=1 /*\' OR email=') OR 1=1 /*\') AND password='*/--'

相当于:

SELECT * from user WHERE (name=') OR 1=1 /*\' OR email=') OR 1=1

关于php - htmlspecialchars 是否足以防止对用单引号引起来的变量进行 SQL 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22116934/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com