PHP 脚本中的 MySQL 语句的安全性如何?
PHP 中构建的 MySQL 语句的安全性如何? 它会容易受到 SQL 注入攻击吗?
$sql = sprintf("INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())",
mysql_escape_string($_SESSION['client']['id']),
mysql_escape_string($_POST['id']));
How secure is this MySQL statement built in a PHP? Would it be vulnerable to an SQL injection?
$sql = sprintf("INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())",
mysql_escape_string($_SESSION['client']['id']),
mysql_escape_string($_POST['id']));
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,因为 %d 仅产生数字,因此无需转义字符串。 使用单引号也会提高速度。 所以一个安全快捷的方法是:
Yes because %d only results in a number there is no need to escape the string. Using single quotes would provide a speed improvement too. So a safe and fast way is:
不,它不应该是脆弱的。
这是一篇关于如何保护 PHP 中的 SQL 查询的详细文章。
http://www.tech-evangelist.com /2007/11/05/防止sql注入攻击/
No it shouldn't be vulnerable.
Here is a detailed article on how to secure your SQL queries in PHP.
http://www.tech-evangelist.com/2007/11/05/preventing-sql-injection-attack/
对我来说看起来不错。
事实上,在这种情况下是否需要使用 mysql_escape_string,因为 sprintf("%d") 只能产生数字?
It looks fine to me.
In fact, is there any need to use mysql_escape_string in this case, since sprintf("%d") can only result in a number?