请查看以下代码:
$username = $_POST['username'];
$_SESSION['user_name'] = $username;
我在设置mysql_real_escape_string()
值时是否必须使用$username
功能?如果不这样做,这里有任何威胁吗?
注意:我想使用MySQL时使用PDO。
答案 0 :(得分:5)
不,你不需要以任何方式逃避它。如果要将文本与某些字符可能具有特殊含义的其他文本连接,则只需要转义文本。请参阅The Great Escapism (Or: What You Need To Know To Work With Text Within Text)。
答案 1 :(得分:4)
您不必使用,仅在您想要转义字符以将其输入数据库时使用它。
答案 2 :(得分:3)
Mysql_real_escape_string()用于安全目的,因此用户无法执行SQL注入。如果您没有将$_SESSION['user_name']
或$username
用于数据库,则无需使用它。您可以在此处阅读更多内容 - http://php.net/manual/en/function.mysql-real-escape-string.php
mysql_real_escpae_string()为每个特殊字符添加反斜杠。
另外,你应该检查一些SQL注入示例,这样你就可以了解它是如何完成的,以及mysql_real_escape_string()究竟在阻止什么 - http://www.unixwiz.net/techtips/sql-injection.html。
答案 3 :(得分:0)
您不应该因为会话数据只能在服务器上进行操作。
如果您知道,那里有要在查询中使用的数据并且包含需要转义的字符,那么显然您应该确保这样做。
您在包含任何qry语言(如“OR 1 = 1”)的会话中存储的任何值基本上都归结为糟糕的应用程序设计IMO - 会话中任何可能导致安全失误的值都是您自己的错 - 只需确保它无法完成。