【发布时间】:2011-09-03 10:55:10
【问题描述】:
所以,我开始使用 MySQLi 扩展,因为我听说将来会支持它。我读到了这一点,而不是使用mysql_real_escape_string(),出于安全原因,我必须使用prepare(),例如当我在查询中使用$_GET 或$_POST 时。
这是真的吗?我看到 prepare() 非常适合制作可以更改参数的 SQL 查询模板。所以脚本也可以在 SQL 级别上是动态的。它真的很有用。但我找不到有关其安全措施的真实信息。真的可以避邪不射吗?还是我必须在编程层面处理它?
例如这个代码是安全的吗?如您所见,它使用$_GET 填充模板,因此如果 MySQLi prepare 无法按我希望的那样工作,那将非常危险。
$stmt = $mysqli->prepare('SELECT description,title FROM menu WHERE name = ?');
$stmt->bind_param('s', $n);
$n = $_GET['b'];
$stmt->bind_result($meta_description,$meta_title);
$stmt->execute();
【问题讨论】:
标签: php security mysqli prepared-statement sql-injection