PHP mysql_query вход в систему безопасности системы - PullRequest
0 голосов
/ 21 сентября 2011

Я делаю систему входа в систему (и действительно новую на php). Мой друг сказал мне, что мне лучше использовать 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)

Ответы [ 2 ]

2 голосов
/ 21 сентября 2011

Вместо того, чтобы гадать на ReqExp и / или ограничивать разрешенные символы, вы можете просто использовать mysql_real_escape_string

$result = mysql_query("SELECT `username`,`password`
                       FROM `login` 
                       WHERE `username` = '".mysql_real_escape_string($_POST['username'])."' &&
                             `password` = '".mysql_real_escape_string($_POST['password'])."'")
0 голосов
/ 21 сентября 2011

Этого должно быть достаточно для очистки вашего логина, но он ограничивает ваши имена пользователей и пароли только альфа-адресами. Лучше было бы /[^a-z0-9-_\s]|^\s|\s$|[^0-9a-zA-Z-_](?=\s)/i

То есть a-z,0-9,-,-,and space. Удаляет пробел в начале строки и в конце, а также любой пробел, следующий за любым символом, кроме a-z,0-9,-,_

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...