Я строю форму входа, используя 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);
} ?>
БОЛЬШОЕ СПАСИБО
Мой вопрос, это вообще безопасно?
Нет, это не безопасно.
Я не использую хеширование, и я не уверен, как это будет сделано с ajax.
Аутентификация на самом деле не может быть выполнена с помощью AJAX. С уважением ты лаешь не на то дерево.
Начните с чтения этой части руководства по PHP. http://php.net/manual/en/faq.passwords.php Иди прочитай это сейчас. Будем ждать
Добро пожаловать. Вам следует никогда положить ваш простой текстовый пароль в базу данных. Если вы не уверены, почему это так, прочитайте о «нарушении данных Эшли Мэдисон» онлайн или посетите веб-сайт https://haveIBeenPwned.com/
Вы хотите, чтобы киберпреступнику, который украл вашу таблицу пользователей, было как можно сложнее угадывать пароли ваших пользователей. Если вы храните их как текст, угадать их тривиально.
Допустим, ваши пользователи уже зарегистрированы. Смысл аутентификации вашего пароля заключается в
password_verify()
функция делает это хорошо.session_create_id()
метод для этого.Других решений пока нет …