我什么时候应该使用 mysql_real_escape_string?
只有当我将行插入数据库时?或者只有当我有用户输入时?
谢谢
我什么时候应该使用 mysql_real_escape_string?
只有当我将行插入数据库时?或者只有当我有用户输入时?
谢谢
每当您构建将针对数据库运行的查询时,您都应该使用 mysql_real_escape_string()。任何用于构建数据库查询的用户输入都应通过此函数运行。这将防止 sql 注入攻击。
当涉及到这一点时,用户输入是你最关心的领域。
当您将字符串的值插入 SQL 语句并且使用 MySQL API 时,您应该使用 mysql_real_escape_string。
$sql = "SELECT * FROM student WHERE foo = '" . $foo . "'";
应该:
$sql = "SELECT * FROM student WHERE foo = '" .
mysql_real_escape_string($foo) . "'";
但是,您还应该考虑将PDO与准备好的语句和绑定参数一起使用,而不是mysql_real_escape_string
. 这降低了出错的风险。
总是,除了整数,你使用intval()
它会简单地过滤表单数据中包含的所有特殊字符,以防止 SQL 注入(SQL 注入是一种黑客工具,用于通过对表单数据的一些查询来入侵网站)