这个MySQL语句在PHP中构建的安全性如何?是否容易受到SQL注入?

$sql = sprintf("INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())", 
                 mysql_escape_string(

这个MySQL语句在PHP中构建的安全性如何?是否容易受到SQL注入?

<*>SESSION['client']['id']), mysql_escape_string(

这个MySQL语句在PHP中构建的安全性如何?是否容易受到SQL注入?

<*>POST['id']));
有帮助吗?

解决方案

是的,因为%d只会产生一个不需要转义字符串的数字。使用单引号也可以提高速度。所以安全快捷的方式是:

$sql = sprintf('INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())', 

是的,因为%d只会产生一个不需要转义字符串的数字。使用单引号也可以提高速度。所以安全快捷的方式是:

<*>SESSION['client']['id'],

是的,因为%d只会产生一个不需要转义字符串的数字。使用单引号也可以提高速度。所以安全快捷的方式是:

<*>POST['id']);

其他提示

不,它不应该是脆弱的。

以下是有关如何在 PHP 中保护 SQL 查询的详细文章。

http://www.tech- evangelist.com/2007/11/05/preventing-sql-injection-attack/

对我来说很好看。

实际上,在这种情况下是否需要使用mysql_escape_string,因为sprintf(“%d”)只能产生一个数字?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top