Насколько безопасен этот метод входа в AJAX?

Я строю форму входа, используя ajax php и MySql.

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

Мой вопрос, это вообще безопасно? Я не использую хеширование, и я не уверен, как это будет сделано с ajax. Все примеры очень ценятся

index.php

<script>
$(document).ready(function(){

$('form[name=loginForm]').submit(function() {

$.post('ajax.php', {    username: $('[name=username]').val(),
password: $('[name=password]').val()},
function(data){
if(data.success){

alert('welcome');

}else{
alert("incorrect");
}
}, 'json');

return false;
});
});
</script>

ajax.php

<?php
if($_POST){

/** Fetch data from mysql **/
$u = $_POST['username'];
$p = $_POST['password'];

$sql = "SELECT * FROM users WHERE  username='$u' AND password='$p' ";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$_SESSION['userid'] = $row["username"];
$_SESSION['userid'] = $row["username"];

$data['success'] = true;
}
}
else
{

$data['success'] = false;

}
/** Fetch data from mysql **/

echo json_encode($data);
}  ?>

БОЛЬШОЕ СПАСИБО

1

Решение

Мой вопрос, это вообще безопасно?

Нет, это не безопасно.

Я не использую хеширование, и я не уверен, как это будет сделано с ajax.

Аутентификация на самом деле не может быть выполнена с помощью AJAX. С уважением ты лаешь не на то дерево.

Начните с чтения этой части руководства по PHP. http://php.net/manual/en/faq.passwords.php Иди прочитай это сейчас. Будем ждать

Добро пожаловать. Вам следует никогда положить ваш простой текстовый пароль в базу данных. Если вы не уверены, почему это так, прочитайте о «нарушении данных Эшли Мэдисон» онлайн или посетите веб-сайт https://haveIBeenPwned.com/

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

Допустим, ваши пользователи уже зарегистрированы. Смысл аутентификации вашего пароля заключается в

  1. получить имя пользователя и пароль от пользователя.
  2. найдите пользователя по имени в вашей базе данных, вернув хешированный пароль.
  3. сравните хешированный пароль в вашей базе данных с тем, который вы собрали у пользователя. РНР password_verify() функция делает это хорошо.
  4. если проверка не пройдена, откажитесь от информации пользователя. Не делайте дать им намеки на то, что было не так. Просто скажите им: «Ваш логин не пройден». Вы не хотите говорить им «вы дали правильное имя пользователя, но неверный пароль».
  5. если проверка прошла успешно, вы создаете сеанс для этого пользователя, чтобы он мог продолжать использовать другие страницы в вашем веб-приложении без повторного входа в систему. Читайте о сессиях php здесь.
  6. Вы используете идентификатор сеанса для представления сеанса. Идентификатор сеанса — это трудно угадываемый токен данных с ограниченным временем жизни. PHP предлагает session_create_id() метод для этого.
  7. Вы помещаете этот идентификатор сессии в файл cookie и возвращаете его в свой браузер. Вы не можете надежно передавать куки в браузеры с AJAX поэтому ваша стратегия аутентификации не будет работать.
  8. Последующие запросы к вашему веб-приложению представляют идентификатор сеанса в файле cookie. Вы проверяете это, чтобы удостовериться, что оно действительно и не истекло время ожидания. Затем вы делаете то, что пользователь просит вас сделать.
2

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

Других решений пока нет …

По вопросам рекламы [email protected]