Безопасен ли этот простой вход?

<?php
if (!empty($_POST['password']) && $_POST['password'] === "correct" ) {
echo "<h1 style='color:green'>Password is correct, you may enter!!!</h1>";
}else{
if (!empty($_POST['password']) && $_POST['password'] !== "correct") {
die('<h1 style="color:red">Password is ICORRECT, you may not enter!!!</h1>');
}else{
echo "Enter Password:";
echo "<form action='' method='POST'>";
echo "<input type='text' name='password'>";
echo "<input type='submit'>";
echo "</form>";
die();
}}
?>

Помимо доступа к вашему веб-серверу и просмотра пароля, есть ли способ, с помощью которого любой может получить доступ к вашему сайту, например, хакер, и увидеть «Пароль правильный, вы можете войти !!!» фактически не зная пароля.

А также мы можем исключить такие вещи, как атаки SSL и тому подобное.

Я просто хочу знать, на первый взгляд, безопасен ли этот логин?

1

Решение

Я голосую нет Пароли никогда не должны быть в кодовой базе, особенно если вы отслеживаете код в git. Используйте переменные среды или базу данных.

Вот хороший пакет, я использую много переменных загрузки среды:

https://github.com/vlucas/phpdotenv

Также никогда не передавайте файл env в репозиторий. 🙂

2

Другие решения

Я думаю, что все, что связано с учетными данными для входа, представляет угрозу, если вы жестко закодируете их где-то в своем коде. Я бы предпочел использовать базу данных, такую ​​как MySQL с хешированным паролем md5, который никто не сможет расшифровать.

Хорошим подходом будет поиск имени пользователя и пароля в базе данных и проверка их соответствия:

SELECT username,password FROM users WHERE username='username' AND password='password'

Если запрос что-то возвращает, то у вас есть совпадение. Если это не так, выведите сообщение об ошибке.

0

Нет, это не безопасный вход. И не только из-за вашего выбора паролей.

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

Однако это безопасность через неизвестность. И не эффективен.

Вы хотите практиковать слои в вашей безопасности. Вы должны предположить, что хакер имеет доступ к вашему исходному коду. Вы должны предотвратить их попадание на вашу страницу, даже зная код.

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

Пожалуйста, имейте в виду, что PHP имеет password_verify функция, которая может быть использована для проверки паролей. И password_hash функция, которая обновит используемый алгоритм, чтобы помочь оставаться в безопасности.

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

0

пароль «правильный» слабый, поэтому хакер может использовать словарь-брутфорс и быстро его найти

Если ваш сервер настроен неправильно и / или имеет какое-то дополнительное программное обеспечение (с ошибками), хакер может использовать его для получения доступа к файлам на вашем сервере через браузер.

Я предполагаю что ваш вопрос теоретический и вы знаете, что нехорошо хранить явные пароли ваших пользователей — в случае, если хакер получит их с помощью электронных писем пользователей, он может совершить много «плохих дел», потому что я думаю, что многие пользователи используют свой пароль электронной почты везде … bcrypt хорошая идея 🙂

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector