Я долго искал безопасный вход в систему с помощью PHP. Я нашел интересный контент, хотя я все еще не совсем уверен в самом безопасном и упрощенном подходе.Безопасный вход с помощью PHP
Я создал простую систему, хотя я не уверен, где она достаточно безопасна. Я буду держать это вкратце, чтобы не задушить вас деталями:
Моя пользовательская таблица в базе данных содержит столбец с именем «loginToken». Когда пользователь входит в систему, создается значение (на основе этого идентификатора пользователя, случайное число и, наконец, sha1 hashed), который вставляется в loginToken таблицы пользователей базы данных.
В дополнение к этому, $ _CCOKIE создается с тем же значением. Таким образом, эти значения совершенно различны для каждого пользователя, и чередует каждый раз, когда пользователь входит в
Теперь, чтобы проверить пользователь вошел в систему, я использую этот следующий код:.
$user_id = -1; //By default, the user is logged out
if (isset($_SESSION["user"]) && isset($_COOKIE["ut"])) { //Check session and user token exists
//Get variables
$uid = $_SESSION["user"]; //Get user ID
$ut = $_COOKIE["ut"]; //Get user token
//Compare the user id with the user token in the database
$sql = mysql_query("
SELECT COUNT(*)
FROM `users`
WHERE `id` = '$uid' AND `login_token` = '$ut'
");
//Get result
$sql = mysql_result($sql, 0);
//Found!
if ($sql == 1) {
$user_id = $uid; //User logged in!
}
}
Это понятно? Если да, то это достаточно безопасный метод?
Спасибо!
Это не безопасно. Вы не дезинфицируете свои входы, и вы доверяете всему от клиента. По крайней мере, используйте подготовленные заявления. –
вам нужно посмотреть на mysqli и параметризованные запросы http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php – j0hnstew
@ RudiVisser: К сожалению, я до сих пор довольно новичок в этой области кодирования , Что такое «подготовленные заявления»? – Tom