在处理会话时我们是否必须使用mysql_real_escape_string()?

时间:2012-07-24 07:28:48

标签: php mysql session mysql-real-escape-string

请查看以下代码:

$username = $_POST['username'];
$_SESSION['user_name'] = $username;

我在设置mysql_real_escape_string()值时是否必须使用$username功能?如果不这样做,这里有任何威胁吗?

注意:我想使用MySQL时使用PDO。

4 个答案:

答案 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 - 会话中任何可能导致安全失误的值都是您自己的错 - 只需确保它无法完成。