1

请看下面的代码:

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

mysql_real_escape_string()我在设置$username值时也必须使用函数吗?如果我不这样做,这里有什么威胁吗?

注意:当我想使用 MySQL 时,我使用了 PDO。

4

4 回答 4

5

不,你不需要在那里以任何方式逃避它。仅当您将文本与某些字符可能具有特殊含义的其他文本连接时,才需要对文本进行转义。请参阅伟大的逃避现实(或:使用文本中的文本需要知道的内容)

于 2012-07-24T07:31:27.717 回答
4

您不必这样做,仅当您想转义字符以将其输入数据库时​​才使用它。

于 2012-07-24T07:30:46.730 回答
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

于 2012-07-24T07:31:04.800 回答
0

您不必这样做,因为会话数据只能在服务器上进行操作。

如果您知道那里有要在查询中使用的数据并且有需要转义的字符,那么显然您应该确保发生这种情况。

您在包含任何 qry 语言(如“OR 1 = 1”)的会话中存储的任何值基本上都归结为糟糕的应用程序设计 IMO - 会话中任何可能使您面临安全漏洞的值都是您自己的错 - 只要确保它可以完成不了。

于 2012-07-24T07:34:05.570 回答