Php 如果我对会话密钥使用session_id(),安全吗?
我想问一下登录系统技术,这里是我的登录系统脚本,如果我使用session_id()作为会话密钥是否安全。你们可以分享你们的登录系统给我更多的参考资料吗。多谢各位Php 如果我对会话密钥使用session_id(),安全吗?,php,Php,我想问一下登录系统技术,这里是我的登录系统脚本,如果我使用session_id()作为会话密钥是否安全。你们可以分享你们的登录系统给我更多的参考资料吗。多谢各位 <?php class Login { function __construct(){ } function is_logged_in(){ if(empty($_SESSION)){ session_start(); } if(
<?php
class Login {
function __construct(){
}
function is_logged_in(){
if(empty($_SESSION)){
session_start();
}
if(empty($_SESSION[session_id()])){
return false;
}
return true;
}
function get_user(){
if(!$this->is_logged_in()){
return $this->login();
exit();
}
return $_SESSION;
}
function set_user($userattr){
$_SESSION[session_id()] = $userattr;
}
function login(){
if(isset($_POST['btnlogin'])){
$config = new Config;
$result = "";
$sql = $config->pdo->prepare("SELECT * FROM auth
WHERE username = '".$_POST['username']."'
AND passcode = '".md5($_POST['password'])."'");
$sql->execute();
if($sql->rowCount() > 0){
$this->set_user(array('username' =>
$_POST['username'])
);
header("Location: ./index.php");
}else{
echo 'wrong username or pass';
}
}
?>
<div id="login-box">
<form method="post" action="">
<input type="text" name="username" class="input-field" required="true" placeholder="type your username" />
<input type="password" name="password" class="input-field" required="true" placeholder="type your password" />
<input type="submit" value="Log In" class="login-button" name="btnlogin" />
</form>
</div>
<?php
}
}
您的登录代码非常不安全。您对SQL注入非常开放,只需想象有人发布用户名“DROP TABLE auth--代码>。您已经在使用准备好的语句,那么为什么不使用参数呢?另外:md5
多年来一直不安全。使用密码\u散列()
和密码\u验证()
!谢谢您的回答,好的,我将搜索密码\u散列和密码\u验证,现在,我用于会话的会话\u id如何?我认为这是多余的,因为使用的会话由会话id本身定义。这只是多余的。谢谢@franzgleichman,oke,我将在我的会话中使用来自generate char的密钥。我认为这样会更好。请注意,会话是按用户进行的,因此不需要其他/随机名称,您可以使用$\u session['username']
。