gpt4 book ai didi

php - 这个查询对 sql 注入(inject)安全吗?

转载 作者:IT王子 更新时间:2023-10-29 00:30:52 26 4
gpt4 key购买 nike

脚本在 PHP 中,作为数据库,我使用 MySQL。这是脚本本身。

$unsafe_variable = $_GET["user-input"];
$sql=sprintf("INSERT INTO table (column) VALUES('%s')",$unsafe_variable);
mysql_query($sql);

有人说,如果用户将 ;DROP TABLE blah; 字符串分配给变量 $unsafe_variable,它会删除该表。

但我试过这个例子,

http://localhost/test.php?user-input=DROP%20TABLE%20my_table 

但它并没有删除表,而是在表中插入了一个新行 (;DROP TABLE blah;)

谁能解释一下如何用 sql 注入(inject)攻击这个脚本?

最佳答案

由于 PHP 的 mysql_query 函数每次调用只允许一个查询,因此该特定注入(inject)将不起作用。但是,如果 column 具有主键或唯一键,则以下可能有效:

$unsafe_variable = "admin') ON DUPLICATE KEY UPDATE password=MD5(CONCAT('knownsalt', 'newpassword'))#";

最好使用冗长的 mysql_real_escape_string 函数:

$sql=sprintf("INSERT INTO table (column) VALUES(%s)",
mysql_real_escape_string($unsafe_variable));
mysql_query($sql);

关于php - 这个查询对 sql 注入(inject)安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3040174/

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