gpt4 book ai didi

php - 使用 session 确保登录脚本安全

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

我目前正忙于编写自己的登录脚本,该脚本很简单,但也足够安全,足以满足我的目标。它使用 MySQL 来保存用户名和密码。现在我开始使用 session 来检查用户是否已登录,就像在许多教程中可以找到的那样。到目前为止,我已经想到了这一点,但我只是不确定这是否是正确/安全的方法。

<?php

$db = new PDO('mysql:host=HOST;dbname=DATABASE;charset=UTF-8',
'USERNAME',
'PASSWORD',
array(PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

if(isset($_POST['username']) && isset($_POST['password'])){
$select = $db->prepare("SELECT id, username FROM vwo5_users WHERE username=:username AND password=:password");
$select->execute(array(':username' => $_POST['username'], ':password' => $_POST['password']));
$amount = $select->rowCount();
$result = $select->fetch(PDO::FETCH_ASSOC);
$user_id = $result['id'];
$user_name = $result['username'];


if($amount >= 1){
session_start();
$_SESSION['user_id'] = $user_id;
$_SESSION['user_name'] = $user_name;
echo 'Logged in';
}
else{
echo 'Wrong login data';
}
}
else{
header('Location: dbtestform.php');
}

?>

然后,我会在安全页面检查 session 中的id用户名是否也在数据库中一起出现,但我无法确定这是否安全的关键。我知道互联网上到处都在描述它,但我找到的任何来源都没有让我更清楚地了解它。

最佳答案

I'm just not sure whether this is a proper/safe way to do this.

看起来不错,但似乎您没有对密码进行哈希处理,而您绝对应该这样做。研究一下 BCrypt。

我不认为人们通常会在 session 中存储用户 ID 和用户名,只存储其中之一,您可以在发出新请求时查询所需的任何其他信息。

除了散列之外,它看起来非常好。

关于php - 使用 session 确保登录脚本安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17090522/

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