gpt4 book ai didi

php - 这种ajax登录方法是否安全?

转载 作者:行者123 更新时间:2023-11-29 05:58:55 24 4
gpt4 key购买 nike

我正在使用 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);
} ?>

非常感谢

最佳答案

My question is, is this secure at all?

不,它不安全。

I'm not using any hashing and I'm not sure how it would be done with ajax.

认证实际上不能用ajax来完成。恕我直言,您找错人了。

首先阅读 PHP 手册的这一部分。 http://php.net/manual/en/faq.passwords.php现在就去读吧。我们会等。

欢迎回来。您应该永远不要将纯文本密码放入数据库中。如果您不确定为什么这是真的,请在线阅读“Ashley Madison 数据泄露”或访问 https://haveIBeenPwned.com/

您想让窃取您的用户表的网络罪犯尽可能难以猜测您的用户密码。如果将它们存储为文本,则很容易猜测。

假设您的用户已经注册。您的密码验证的重点是

  1. 从用户那里收集用户名和密码。
  2. 在您的数据库中按名称查找用户,提取散列密码。
  3. 将您数据库中的散列密码与您从用户那里收集到的密码进行比较。 php's password_verify() function做得很好。
  4. 如果验证失败,则拒绝用户的信息。 不要给他们任何错误提示。只需告诉他们“您的登录失败”。您不想告诉他们“您提供的用户名正确但密码错误”。
  5. 如果验证成功,您将为该用户生成一个 session ,这样他们就可以继续使用您网络应用程序中的其他页面而无需再次登录。 Read about php sessions here .
  6. 您使用 session ID 来表示 session 。 session ID 是一种难以猜测的数据 token ,具有有限的生命周期。 php 提供了一个 session_create_id() method for this .
  7. 您将该 session ID 放入 cookie 中并将其反馈给您的浏览器。 您无法可靠地向使用 AJAX 的浏览器提供 cookie,因此您的身份验证策略将不起作用。
  8. 对您的网络应用程序的后续请求会在 cookie 中显示 session ID。您检查它以确保它有效并且没有超时。然后你做用户要求你做的事。

关于php - 这种ajax登录方法是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46744371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com