2015-11-08 74 views
-1

我有一系列的檢查,確定用戶是否有資格訪問一個頁面,如果他們被拒絕訪問我目前提醒他們,並使用Javascript重定向他們。我意識到可以非常容易地關閉Javascript並繞過重定向,所以我添加了一條使用PHP重定向的語句。安全的Javascript重定向

<script> 
    window.alert("Access denied."); 
    window.location.href='index.php'; 
</script> 

<noscript> 
    <?php header('Location: index.php'); ?> 
</noscript> 

這是更好還是我應該重定向一個不同的方式?

感謝

+1

客戶端腳本只能用於改善用戶體驗。任何與安全有關的事情都應該在服務器端的用戶範圍之外完成。您可以確定使用js重定向來顯示模式或其他任何內容,但是您需要始終確保資源的實際保護在服務器範圍內完成。 –

回答

1

首先:你需要從PHP發送的頭部,你輸出之前的任何內容(因爲這樣的標題就已經被髮送)。

所以,你應該在你的腳本的頂部做這樣的事情:

<?php 
if ($user_is_eligible) { 
    header('Location: index.php'); 
    die(); 
} 

die();部分很重要,因爲它確保腳本停在那裏,不發送可能不是針對任何內容用戶看到。