簡體   English   中英

在身份驗證中使用jQuery和AJAX重定向頁面是否安全

[英]Is it safe to redirect page using jQuery and AJAX in authentication

我正在使用PHP,JQuery和AJAX創建用戶身份驗證系統。 提交時,將使用AJAX將請求發送到'authenticate.php',其中包含數據: usernamepassword PHP代碼檢查數據庫中的記錄,並在success返回0,在failure返回1。 然后,如果返回的值為0,則使用'window.location="user.php"'將頁面重定向到'用戶專用頁'window.location="user.php"'

現在,問題是,這樣的身份驗證是否安全且正確? 使用jQuery / JavaScript重定向頁面有任何安全問題嗎?

由於您已經使用PHP,我不建議使用JS來重定向用戶。 您可以使用PHP:

if($user == $db['user'] && $password == $db['password']){
    $_SESSION['logged_in'] = true;
    header('location:user.php');
}else{
    echo 'username of password is wrong';
}

然后在你的user.php文件上:

if(isset($_SESSION['logged_in'] && $_SESSION['logged_in'] == true){
    echo 'welcome to the user page';
}else{
    header('location:index.php');//Go back to login page
}

如果人們直接進入user.php頁面,他們將被重定向到index.php頁面。

現在,問題是,這樣的身份驗證是否安全且正確?

只有在您的user.php再次檢查用戶是否已成功通過身份驗證。 (這通常是會議發揮作用的地方。)

否則,當然每個知道user.php的URL的人都可以直接訪問它。

使用jquery / js重定向頁面有任何安全問題嗎?

window.location="user.php" (這是錯誤的,順便說一句。 - 正確的是window.location.href="user.php" )之間的唯一區別,比如說,該頁面的正常鏈接, <a href="user.php">foo</a> ,第一個是自動發生的,第二個是要求用戶先點擊鏈接。

因此,它就像您使用了一個簡單的鏈接一樣“安全”。 在這種情況下,這實際上意味着什么,取決於我上面所說的。

取決於您希望應用程序的安全性和合規性。 根據RFC,不建議像這樣登錄,但保留表單在服務器端並將登錄表單集成到前端(通過iframe),然后只需將重定向URL和令牌,范圍等重定向到本地html,然后例如。 向您的前端應用程序發送一個窗口postmessage。

https://tools.ietf.org/html/rfc6749#page-19

如果您只是想快速而又臟,可以去window.location.hrefdocument.location.href

或者更安全一點,將用戶發送到服務器並將其重定向回來,但最終可能會重定向地獄,因為它不容易回到用戶所處的狀態(包括設置和內容)。

無論如何,您將始終必須檢查當前用戶的會話狀態,無論您之后使用serveride(會話)進行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM