这个用 PHP 构建的 MySQL 语句有多安全?它是否容易受到 SQL 注入(inject)攻击?
$sql = sprintf("INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())",
mysql_escape_string($_SESSION['client']['id']),
mysql_escape_string($_POST['id']));
最佳答案
是的,因为 %d 只会产生一个数字,所以不需要对字符串进行转义。使用单引号也可以提高速度。所以一个安全快速的方法是:
$sql = sprintf('INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())', $_SESSION['client']['id'], $_POST['id']);
关于php - PHP 脚本中的这条 MySQL 语句有多安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1201247/