【发布时间】:2014-06-10 11:54:32
【问题描述】:
我对 PHP 还很陌生,但对 StackOverflow 已经熟悉了一段时间。
我最近一直在阅读有关使用 mysql_real_escape_string 的适当时间的信息,希望对以下内容提出任何建议。
在初始 $_POST 变量上使用一次 mysql_real_escape_string 是否足以通过脚本保护字符串?
例如:
$username = mysql_real_escape_string($_POST["username"]);
$password = mysql_real_escape_string($_POST["password"]);
$email = mysql_real_escape_string($_POST["email"]);
$repeat_password = mysql_real_escape_string($_POST["repeat_password"]);
我在运行一堆 if 语句之前声明这些值,最后在 if 语句完成后,我将 INSERT 插入到 mysql 数据库中:
mysql_query("INSERT INTO users (username, password, email, signup_date) VALUES ('$username', '$password', '$email', CURDATE())") or die(mysql_error());
mysql_real_escape_string 在 if 语句的其他任何地方都没有使用 - 这对于新手来说是否足够安全,同时仍然保持一些注入保护?
【问题讨论】:
-
mysql_real_escape_string用于转义文本字符串 -
你应该切换到 pdo
-
嗯。我的印象是我对它的作用有一个不错的了解——我想我需要继续我的学业!
-
您不应该存储密码。如果无法避免,请使用大的随机盐对其进行加盐,然后使用没有大彩虹表可用的体面算法对其进行散列。
-
很好,您知道注射。但是为什么canonical question 不回答您的问题?
标签: php mysql mysql-real-escape-string