1. С именем пользователя и паролем1:
$username = $_POST['username'];
$password1 = password_hash($_POST['password1'], PASSWORD_DEFAULT);
< /code>
2. Использование просто файла (Password2 = извлеченный пароль из файла):
$password2 = hash('sha3-512', $_POST['password2']);
< /code>
Примечание: < /strong> Первый метод - это общий метод, который используется в настоящее время (нет обсуждения этого метода), но второй метод, где вход в систему выполняется с использованием просто файла, он обсуждается. и выполнить проверку. Но во втором методе невозможно сохранить пароль (пароль2) , используя функцию Secure Password_hash , а затем получить к нему доступ без имени пользователя (поскольку у нас просто есть файл). Поэтому я должен сохранить его, используя функцию хэш , чтобы иметь возможность получить к ней доступ. Я полагаю, что второй метод гораздо более безопасен от атак, однако, Мой основной вопрос: < /strong> я все еще хочу, чтобы пароль (пароль2) < /code> во втором методе хранится более надежно и по -прежнему доступен через запрос? ) < /code> получается во втором методе:
< /p>
- Когда пользователь создает и входит в свою учетную запись, используя имя пользователя < /code> и пароль (пароль1) < /code>, у него есть опция в своей панели для регистрации файла в качестве файла входа. С тех пор они могут войти в свою учетную запись, используя только этот файл, без необходимости имени пользователя < /code> или пароля (пароль1) < /code>.
< /li>
Пароль (пароль2) < /code> извлекается из этого файла на стороне клиента и затем сохранено. class = "Snippet-Code">
document.getElementById("file").addEventListener("change", function (event) {
const filereader = new FileReader();
filereader.onload = function () {
var filedata = filereader.result.split(',')[1];
const datalength = filedata.length;
filedata = filedata.slice(Math.round(((datalength * 2) / 9)) - 100, Math.round(((datalength * 2) / 9)) + 100) + filedata.slice(Math.round(((datalength * 5) / 9)) - 100, Math.round(((datalength * 5) / 9)) + 100) + filedata.slice(Math.round(((datalength * 8) / 9)) - 100, Math.round(((datalength * 8) / 9)) + 100);
if (/^[a-zA-Z0-9+=/]*$/.test(filedata)) {
console.log(filedata);
//Sending filedata (password2) via Ajax
}
};
filereader.readAsDataURL(event.target.files[0]);
});
< /code>
< /div>
< /div>
Из -за ограничений скорости в Интернете и слабого подключения, не практично загружать файл 3GB (пользователь может выбрать файл носителя любого размера, если он не делает этот файл общедоступным в веб -сайте), а затем извлечь пароль). ) . Поэтому мы выполняем эту операцию на стороне клиента. < /P>
Подробнее здесь: https://stackoverflow.com/questions/797 ... ust-a-file