请看下面的代码:
$username = $_POST['username'];
$_SESSION['user_name'] = $username;
mysql_real_escape_string()
我在设置$username
值时也必须使用函数吗?如果我不这样做,这里有什么威胁吗?
注意:当我想使用 MySQL 时,我使用了 PDO。
请看下面的代码:
$username = $_POST['username'];
$_SESSION['user_name'] = $username;
mysql_real_escape_string()
我在设置$username
值时也必须使用函数吗?如果我不这样做,这里有什么威胁吗?
注意:当我想使用 MySQL 时,我使用了 PDO。
不,你不需要在那里以任何方式逃避它。仅当您将文本与某些字符可能具有特殊含义的其他文本连接时,才需要对文本进行转义。请参阅伟大的逃避现实(或:使用文本中的文本需要知道的内容)。
您不必这样做,仅当您想转义字符以将其输入数据库时才使用它。
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。
您不必这样做,因为会话数据只能在服务器上进行操作。
如果您知道那里有要在查询中使用的数据并且有需要转义的字符,那么显然您应该确保发生这种情况。
您在包含任何 qry 语言(如“OR 1 = 1”)的会话中存储的任何值基本上都归结为糟糕的应用程序设计 IMO - 会话中任何可能使您面临安全漏洞的值都是您自己的错 - 只要确保它可以完成不了。