Перейти к содержимому

Как написать сайт на джаве с паролем

  • автор:

Курсы 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 для этого существует несколько подходов. Рассмотрим некоторые из них:

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

В 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 , то пароль неверный.

Этот подход обеспечивает дополнительный уровень безопасности благодаря использованию соли.

Соль — это случайно сгенерированная строка, которая добавляется к паролю перед хэшированием. Соль обеспечивает уникальность хэш-значения для каждого пароля, даже если пароли идентичны. Это усложняет задачу злоумышленникам, которые пытаются взломать пароли, используя таблицы ранее вычисленных хэш-значений (так называемые «таблицы радуг»).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *