php - PHP 脚本中的这条 MySQL 语句有多安全?

标签 php mysql security sql-injection

这个用 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/

相关文章:

mysql - 如何将 'not in'语句转换为与group by连接

security - CSRF保护:我们是否必须为每种表格生成 token ?

java - Spring Security 实体字段级安全

javascript - MongoDB 安全问题

mysql - 多个表上的 SQL 请求

Android - 将 SQLite 与 MySQL 同步的最佳方式

php - PHP解析/语法错误;以及如何解决它们

php - 如何修复意外的 T 变量错误

php - 如果 php 文件中有文本,Ajax 不会返回 json

php - 如何使用 file_get_contents() 加载远程文件?