![](/img/trans.png)
[英]How to securely authenticate cross-domains in an iframe (excluding third-party cookies)?
[英]How to authenticate securely by session tokens and cookies? updated
我試圖編寫自己的身份驗證方法(學校項目),但遇到了麻煩。 請告知,如何解決安全身份驗證:
有一個index.php,其中包含需要“保護”的所有內容。 我將在此處復制代碼的相關部分。
更新了index.php
session_start();
function checkUserAuth(){
$authStatus = false;
if (isset($_SESSION['PHPSESSID'])){
if ($_SESSION['PHPSESSID'] == $_COOKIE['PHPSESSID']){
$authStatus = true;
}
}
return $authStatus;
}
if(!checkUserAuth()){
include_once(dirname(__DIR__).'/admin/authentication/login.php');
exit();
}
如果checkUserAuth()確定沒有經過正確身份驗證的用戶,則將包括login.php並停止腳本的其余部分。
更新的login.php:
if(array_key_exists($username, $users) && password_verify($password, $users[$username])){
$_SESSION['PHPSESSID'] = $_COOKIE['PHPSESSID'];
$_SESSION['login_user'] = $_POST['user'];
我想這可能發生的是,如果登錄詳細信息正確,則login.php會設置cookie,並刷新頁面。 然后index.php將檢測到cookie,並跳過登錄部分。
登錄已經很清楚了,感謝Juned,我認為它現在可以正常工作了。 但是我不知道這有多安全?
從1到非常高的等級,我錯了嗎?
有很多方法可以做到這一點。 下面的偽代碼不是最有效的,但是應該可以工作,我認為您在上面所做的工作實際上不會起作用。
這有幫助嗎?
login.php偽代碼
<?php
session_start(); // this function checks if there's a session ID already set, if not, sets one.
if(array_key_exists($username, $users) && password_verify($password, $users[$username])){
// do your login details checking here
// if login details correct
// set a flag in the $_SESSION superglobal and whatever else you want to store about the user like their username e.g.
$_SESSION["loggedIn"] = true;
$_SESSION["username"] = "$_POST['user']"; // better practice to fetch a clean version from your database
//else return user to login page
}
?>
index.php偽代碼
<?php
session_start(); // this will fetch the session ID and other variables that you might have set e.g. username, logged in status
function checkUserAuth(){
$authStatus = false;
if (isset($_SESSION['loggedIn']) && $_SESSION['loggedIn'] === true){
$authStatus = true;
}
return $authStatus;
}
if(!checkUserAuth()){
// redirect to login page. e.g.
header('Location: login.php');
exit;
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.