PHP mysql_query 登录系统安全

标签 php mysql pdo

我正在制作一个登录系统(并且在 php 中确实是新的)。我的 friend 告诉我最好使用 PDO。然而,我不知道如何使用 PDO,而且我对 MySQL 已经有点熟悉了。例如,这是我的代码的一部分:

$un = preg_replace('/[^a-z]/i','',$_POST['username']);
$pw = preg_replace('/[^a-z]/i','',$_POST['password']);
$result = mysql_query("SELECT `username`,`password` FROM `login` where `username` = $un && `password` = $pw") or die (mysql_error());

由于所有非字母数字字符都被删除,上述代码是否会存在任何类型的安全风险?如果是这样,最好的方法是什么? (使用 PDO 或原始 MySQL)

最佳答案

您可以只使用 mysql_real_escape_string

,而不是猜测 ReqExp 和/或限制允许的字符
$result = mysql_query("SELECT `username`,`password`
                       FROM `login` 
                       WHERE `username` = '".mysql_real_escape_string($_POST['username'])."' &&
                             `password` = '".mysql_real_escape_string($_POST['password'])."'")

关于PHP mysql_query 登录系统安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7494376/

相关文章:

php - 跟踪在线用户和页面(没有 mysql?)

php - PHP上的FFMPEG无法打开文件

php - 24 小时后自动从数据库中删除行

php - MySQL Delete Row 在需要时不删除多对多表中的值

php - 带有消息 'could not find driver' 的“PDOException”(Centos,PHP 5.6)

php - jquery ajax 即使发生更新也总是出错

javascript - php 中的 Json_encode 并在 jquery 中检索它

php - 如何使用下拉选项过滤数据

php - 使用 PDO 获取 MySQL 服务器版本

php - WHERE 条件中的顺序如何影响使用 PDO::bindParam() 的查询?