PHP 脚本中的 MySQL 语句的安全性如何?

发布于 2024-07-29 18:07:28 字数 267 浏览 4 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

筱武穆 2024-08-05 18:07:28

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

$sql = sprintf('INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())', $_SESSION['client']['id'], $_POST['id']);

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:

$sql = sprintf('INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())', $_SESSION['client']['id'], $_POST['id']);
向日葵 2024-08-05 18:07:28

不,它不应该是脆弱的。

这是一篇关于如何保护 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/

冷情 2024-08-05 18:07:28

对我来说看起来不错。

事实上,在这种情况下是否需要使用 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?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文