Member 10627743 Ответов: 1

Противоугонный механизм через cron job


Я только что закончил писать php скрипт для регистрации и входа пользователя android который работает отлично но мне нужно добавить
кража механизма идентификации в сценарии. Вот мои вопросы есть ли способ для меня

1. Сделайте так, чтобы имя пользователя и пароль самоуничтожались через задание cron сразу же после успешного входа в систему
или через 30 секунд войти в систему пользователя, то есть если пользователь выходит из приложения и хочет получить доступ к приложению
ему снова придется зарегистрироваться.

2. Есть ли способ, чтобы сделать пароль заблокирована по номеру телефона или IMEI устройства. Если пользователь B хочет использовать пароль пользователя A
приложение должно вызвать или показать диалоговое окно "пароль уже используется другим пользователем".

Смотрите мой код ниже

<? php

класс DbOperations{

частный $con;

функция _ _ конструкция(){

require_once dirname (__FILE__).'/DbConnect.php';

$db = новый DbConnect();

$this- & gt;con = $db - & gt;connect();

}

/*Твар -&ГТ; С -> создавать */

createUser государственной функции($имя пользователя, $сдать, $электронной почты){
Если($этом-&ГТ;isUserExist($имя пользователя,$электронной почты)){
возвращает 0;
}еще{
$password = md5($pass);
$параметр stmt = $это->По кон-&ГТ;подготовить("вставить в `пользователи` (`идентификатор`, `имя_пользователя`, `пароль`, `написать`) значения (null, ?, ?, ?);");
$полу-&ГТ;bind_param("ССС",$имя пользователя,$пароль$электронной почты);

if ($stmt- & gt;execute()){
возврат 1;
}еще{
возвращение 2;
}
}
}

публичная функция userLogin($username, $pass){
$password = md5($pass);
$параметр stmt = $это->По кон-&ГТ;подготовить("выберите ID из пользователей, где имя пользователя = ? А пароль = ?");
$stmt->bind_param("ss",$username,$password);
$stmt- & gt;выполнить();
$полу-&ГТ;store_result();
return $stmt-> num_rows > 0;
}

публичная функция getUserByUsername($username){
$параметр stmt = $это->По кон-&ГТ;подготовить("выбрать * из пользователей, где имя пользователя = ?");
$stmt->bind_param("s",$username);
$stmt- & gt;выполнить();
return $stmt- & gt;get_result ()- & gt;fetch_assoc();
}


частная функция isUserExist($username, $email){
$параметр stmt = $это->По кон-&ГТ;подготовить("выберите ID из пользователей, где имя пользователя = ? Или электронная почта = ?");
$полу-&ГТ;bind_param("СС", $имя пользователя, $электронной почты);
$stmt- & gt;выполнить();
$полу-&ГТ;store_result();
return $stmt-> num_rows > 0;
}

}

Пожалуйста, помогите

Что я уже пробовал:

Я опубликовал вышеприведенный вопрос в stackoverflow и gdg ответа пока нет

Richard MacCutchan

Почему вы хотите уничтожить учетные данные пользователя, когда он выходит из системы? Лучше хранить их в базе данных после регистрации. Кроме того, вы не должны быть в состоянии сказать, был ли пароль уже использован. Каждый пароль должен быть соленым хэшем, хранящимся вместе с регистрационной записью пользователя. Видеть Безопасная Аутентификация Паролем Объясняется Просто[^].

1 Ответов

Рейтинг:
2

Dave Kreskowiak

Если вы хотите сделать свой сайт королевской занозой в заднице, чтобы использовать и отчуждать своих пользователей, эти требования великолепны!

Вы делаете почти все неправильно, например, ограничиваете использование пароля одной учетной записью. ЗАЧЕМ ВЫ ХОТИТЕ ЭТО СДЕЛАТЬ? Вы в основном говорите миру, что, эй, " кто-то использует этот пароль на этом сайте!" Это огромный риск для безопасности других пользователей сайта.

Вы также храните пароли в открытом тексте. Это огромный риск для безопасности всех ваших пользователей. Люди, как правило, используют одно и то же имя пользователя и пароль на нескольких сайтах. Предоставление этих данных в виде открытого текста ставит под угрозу безопасность пользователей на других сайтах. Это верно, даже если у вас есть иллюзия, что ваша база данных защищена от взлома и никогда не будет украдена. Всегда предполагайте, что он будет украден, и защищайте личную информацию в нем по мере необходимости.

О, и вы не предотвращаете кражу чего-либо с помощью этого кода или ваших требований.

Солите пароли и хэшируйте их, сохраняя хэш-значение, а не сам пароль.