Курсы javascript
Вопрос: как совместить эти два кода, что бы все было логично и последовательно, а не так как сейчас?
Код:
var login = prompt(‘Введите логин!’);
if(login == ‘admin’) prompt(‘Введите пароль!’);
> else if(login == null) alert(‘Отмена’);
> else alert(‘В доступе отказано’);
>
var pass = prompt(‘Введите пароль!’);
if(pass == ‘passw’) alert(‘Welcome Home’);
> else if(pass == null) alert(‘Отмена’);
> else alert(‘Неверный пароль’);
>
JSON отправка логина и пароля

Подскажите пожалуйста, правильно ли я отправляю логин и пароль? Я должен через java отправить чтоб получилось так: Вот мой код:
@Override protected Map getParams() throws AuthFailureError < HashMapmap=new HashMap<>(); map.put("login", txtLogin.getText().toString()); map.put("password",txtPassword.getText().toString()); return map; > >;
Но я получаю ошибку 422
Отслеживать
задан 28 окт 2020 в 8:33
21 6 6 бронзовых знаков
Не очень понятно, что должен делать приведенный код и зачем он вообще Вам нужен. Воспользуйтесь Gson или Moshi или еще какой-нибудь библиотекой, умеющей переводить обычные классы в формат json.
Авторизация на сайте
Данный пример не претендует на звание идеального метода защиты, но все же обойти его будет достаточно трудно. Представим следующее: у вас есть закрытый сайт «для своих» и вы не хотите чтобы туда заходили всякие нехорошие личности. В этом нам помогут сессии. Пароли и логины будем хранить в таблице mysql.
На первой странице index.php делаем форму для ввода данных:
Думаю здесь пояснять ничего не нужно. Идем дальше: Сначала краткое пояснение. Мы создаем функцию проверки пользователя check(). У нас есть база данных my_site, содержащая поля id, name и pass, где name и pass — логин и пароль пользователя соответственно. Функция пропускает только тех, кто указал верный логин и пароль в форме ($name, $pass) на входе, потом эти переменные сохраняются в сессию, следовательно, пока сессия жива пользователь может заходить на ваш сайт без авторизации. Даже указав другой верный логин и пароль, он будет авторизирован под указанным ранее логином.
Предполагается, что соединение с базой mysql уже произведено и база данных выбрана.
function check()
if (empty($pass)||empty($name))
error("Не указан логин или пароль");
$sql = "select * from my_site where login='".$name."'";
if ($show = mysql_query($sql))
$a = mysql_fetch_array($show);
if ($a['pass']!=$pass) error("Не верное сочетание логин - пароль");
>
else session_register("name","pass");
>
>
else error("Ошибка запроса к базе данных");
>
>
?>
Начнем пояснения с первой строки.
if (empty($pass)||empty($name))
error("Не указан логин или пароль");
function error($er)
echo $er;
exit(0);
>
?>
$sql="select pass from mysite where login='".$name."'";
if ($show=mysql_query($sql))
$a=mysql_fetch_array($show);
f ($a['pass']!=$pass)
error("Не верное сочетание логин - пароль");
else
session_register("name","pass");
>
else
error("Ошибка запроса к базе данных");
>
?>
Если есть ошибка в запросе к базе mysql, то мы опять же выводим ошибку пользователю.
Итак, вначале каждой страницы, к которой нужно запретить доступ посторонним пишем:
session_start();
/* эта функция открывающая или продолжающая работу с сессиями. Она должна быть задана в самом начале страницы до отправки заголовка страницы. */
check(); //наша функция проверки.
?>
Теперь проверим логику скрипта. Если человек не заполняет одно из полей и нажимает кнопку «вход», то перейдя на страницу index2.php он получит надпись «Ошибка: Не указан логин или пароль».
Если он указывает неверный логин или пароль, то ему выпадает «Ошибка: Не верное сочетание логин — пароль».
Если же он все указывает верно, то попадет на страницу index2.php где вы храните свои тайны. За счет того, что логин и пароль записываются в сессию, юзер может бродить по вашему сверх тайному сайту авторизировавшись только один раз.
Нельзя заходить на сайт под разными именами.
Если человек раз зашел на сайт, то с его компьютера можно посещать этот сайт еще в течении некоторого времени (пока жива сессия), что не очень хорошо, если ты работаешь из Интернет салона.
Как хранить пароли java
Хранение паролей — это важная часть безопасности приложения. В Java для этого существует несколько подходов. Рассмотрим некоторые из них:
- Хранение паролей в виде хэш-значений. Хэш-функции — это математические функции, которые преобразуют исходные данные в уникальную строку фиксированной длины. Хэш-значение пароля можно хранить в базе данных или файле вместо самих паролей. При аутентификации пользователя сравнивается хэш-значение его введенного пароля с хэш-значением, сохраненным в базе данных или файле.
В Java для работы с хэш-функциями можно использовать класс java.security.MessageDigest Вот пример кода:
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Base64; public class PasswordHashingExample public static void main(String[] args) throws NoSuchAlgorithmException String password = "password123"; // Создаем объект MessageDigest с использованием алгоритма SHA-256 MessageDigest md = MessageDigest.getInstance("SHA-256"); // Преобразуем пароль в байтовый массив и вычисляем хэш-значение byte[] hash = md.digest(password.getBytes()); // Кодируем хэш-значение в Base64 и выводим на экран String encodedHash = Base64.getEncoder().encodeToString(hash); System.out.println("Хэш-значение пароля: " + encodedHash); > >
- В этом примере мы создаем объект MessageDigest с использованием алгоритма SHA-256
- Затем мы преобразуем пароль в байтовый массив и вычисляем его хэш-значение.
- В конце мы кодируем хэш-значение в Base64 и выводим на экран.
11 апреля 2023
2 Хранение паролей с использованием библиотеки BCrypt.
BCrypt — это алгоритм хэширования паролей с солью, который обеспечивает дополнительный уровень безопасности. В Java для работы с BCrypt можно использовать библиотеку org.mindrot.jbcrypt
Вот пример кода:
import org.mindrot.jbcrypt.BCrypt; public class PasswordHashingExample public static void main(String[] args) String password = "password123"; // Генерируем соль и хэш-значение пароля String salt = BCrypt.gensalt(); String hashedPassword = BCrypt.hashpw(password, salt); // Проверяем пароль if (BCrypt.checkpw(password, hashedPassword)) System.out.println("Пароль верный"); > else System.out.println("Пароль неверный"); > > >
- В этом примере мы генерируем соль и хэш-значение пароля с использованием метода BCrypt.gensalt() и BCrypt.hashpw()
- Затем мы проверяем пароль с использованием метода BCrypt.checkpw() . Если метод возвращает true , то пароль верный. Если метод возвращает false , то пароль неверный.
Этот подход обеспечивает дополнительный уровень безопасности благодаря использованию соли.
Соль — это случайно сгенерированная строка, которая добавляется к паролю перед хэшированием. Соль обеспечивает уникальность хэш-значения для каждого пароля, даже если пароли идентичны. Это усложняет задачу злоумышленникам, которые пытаются взломать пароли, используя таблицы ранее вычисленных хэш-значений (так называемые «таблицы радуг»).