Использование базового TOTP через мобильное приложение вместо существующей реализации второго пароля на javascript.
This commit is contained in:
@@ -3,6 +3,8 @@
|
||||
/* @var $u User */
|
||||
|
||||
use Core\Config;
|
||||
use Core\Db;
|
||||
use Core\TOTP;
|
||||
use User\Email;
|
||||
use User\Password;
|
||||
|
||||
@@ -14,23 +16,18 @@ $password = new Password($u->info);
|
||||
$email = new Email($u->info);
|
||||
$status = null;
|
||||
|
||||
if ($_POST['oldpsw2']) { // remove psw2
|
||||
if (password_verify((int)$_POST['oldpsw2'], $u->info['pass2'])) {
|
||||
$u->info['pass2'] = $password->changeSecond(null)['pass2'];
|
||||
$status = "<b style='color: darkolivegreen'>Второй пароль выключен.</b><br>";
|
||||
} else {
|
||||
$status = "<b style='color: red'>Введен не верный второй пароль!</b><br>";
|
||||
}
|
||||
if ($_POST['removetotp']) {
|
||||
// Удаление ключа ТОТР
|
||||
$u->info['totp'] = '';
|
||||
Db::sql('update users set totp = ? where id = ?', [$u->info['totp'], $u->info['id']]);
|
||||
$status = "<b style='color: darkolivegreen'>Секретный ключ удалён.</b><br>";
|
||||
}
|
||||
|
||||
if ($_POST['num_count']) { //add psw2
|
||||
$arr = $password->changeSecond((int)$_POST['num_count']);
|
||||
$status = "<b style='color: red'>Второй пароль: {$arr['pass2']}.<br>
|
||||
Запомните или запишите, т.к. он не высылается на email и его нельзя как-либо узнать.
|
||||
Потеряв второй пароль, вы потеряете персонажа!<br>
|
||||
Этот пароль выслан на ваш email.<br>
|
||||
</b><br>";
|
||||
$u->info['pass2'] = $arr['hash'];
|
||||
if ($_POST['newtotp']) {
|
||||
// Создание ключа ТОТР
|
||||
$u->info['totp'] = TOTP::otpSecret($u->info['id']);
|
||||
Db::sql('update users set totp = ? where id = ?', [$u->info['totp'], $u->info['id']]);
|
||||
$status = "<b style='color: darkolivegreen'>Секретный ключ создан.</b><br>";
|
||||
}
|
||||
|
||||
if (
|
||||
@@ -66,7 +63,7 @@ if (
|
||||
}
|
||||
?>
|
||||
|
||||
<form action="main.php?security" method="post" id="security"></form>
|
||||
<form action="/main.php?security" method="post" id="security"></form>
|
||||
|
||||
<div>
|
||||
<h3>Настройки безопасности</h3>
|
||||
@@ -180,41 +177,18 @@ if (
|
||||
</TABLE>
|
||||
</FIELDSET>
|
||||
<FIELDSET>
|
||||
<LEGEND><B> Второй уровень защиты </B></LEGEND>
|
||||
Настоятельно рекомендуем включить второй уровень защиты.<BR>
|
||||
На компьютере может быть установлен клавиатурный шпион, который записывает все нажатия клавиш, таким
|
||||
образом,
|
||||
могут узнать ваш пароль.<BR>
|
||||
Возможно, в сети компьютеров установлен "сетевой снифер", перехватывающий все интернет пакеты, который легко
|
||||
покажет все пароли. Чтобы обезопасить себя, вы можете установить своему персонажу второй пароль, который
|
||||
можно
|
||||
вводить при помощи мышки (клавиатурным шпионом не перехватить) и который передается на игровой сервер в
|
||||
зашифрованном виде, не поддающимся расшифровке ("сетевой снифер" не сможет перехватить его).<BR>
|
||||
<U>Будьте внимательны!</U> Второй пароль отправляется на email один раз,при установке второго уровня защиты!<BR>
|
||||
|
||||
<?php
|
||||
if (!empty($u->info['pass2'])) {
|
||||
echo "<BR><B>Второй пароль установлен.</B><BR><BR>
|
||||
Введите второй пароль <INPUT TYPE=password NAME=oldpsw2 size=10 maxlength=8>
|
||||
<INPUT form='security' TYPE=submit name=changepsw value=\"Выключить второй пароль\" onclick=\"return confirm('Выключить запрос второго пароля при входе в Бойцовский Клуб?')\">";
|
||||
} else {
|
||||
?>
|
||||
Длина пароля:<BR>
|
||||
<label>
|
||||
<INPUT form="security" TYPE=radio NAME="num_count" value=4> 4 знака<BR>
|
||||
</label>
|
||||
<label>
|
||||
<INPUT form="security" TYPE=radio NAME="num_count" checked value=6> 6 знаков<BR>
|
||||
</label>
|
||||
<label>
|
||||
<INPUT form="security" TYPE=radio NAME="num_count" value=8> 8 знаков<BR>
|
||||
</label>
|
||||
<INPUT form="security" TYPE=submit name=changepsw value="Установить второй пароль"
|
||||
onclick="return confirm('Система сама придумает вам второй пароль, он будет показан на этой странице, после того, как вы нажмете OK и продублирован на email, указанный при регистрации. Будьте внимательны.\nУстановить второй пароль?')">
|
||||
<BR>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<LEGEND><B> TOTP </B></LEGEND>
|
||||
TOTP (Time-based One-Time Password) - это метод двухфакторной аутентификации, который генерирует одноразовый пароль на основе текущего времени.
|
||||
Устанавливается для повышения безопасности вашего аккаунта, так как помогает защитить его от несанкционированного доступа.<br>
|
||||
Вы можете использовать TOTP приложения, такие как Google Authenticator или Authy, чтобы генерировать и отображать временные одноразовые пароли на вашем мобильном устройстве.
|
||||
<br><br>
|
||||
<U>Будьте внимательны!</U> Секретный ключ генерируется только один раз и не подлежит восстановлению. Его можно только удалить или заменить новым.<br>
|
||||
<?php if (!empty($u->info['totp'])): ?>
|
||||
<br><b>Секретный ключ:</b>
|
||||
<pre>{$u->info['totp']}</pre><br><br>
|
||||
<input form='security' type='submit' name='removetotp' value='Удалить секретный ключ' disabled><br>
|
||||
<?php endif; ?>
|
||||
<input form='security' type='submit' name='newtotp' value='Создать новый секретный ключ' disabled><br>
|
||||
</FIELDSET>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user