我们都知道'$ _SERVER ['REQUEST_URI']'重定向不安全,因为它容易受到多种形式的攻击。 为解决这个问题,提出了一些解决方案和解释:
PHP Include based on REQUEST_URI
any security concerns with $_SERVER['REQUEST_URI'] and header('location: ...');
我想出了另一种方法,我谦卑地要求你批评,看看它是否确实是一个好的选择,或者它是否仍然容易受到我没想到的东西的影响,请记住我想出了这个具有安全性和可维护性优先级的解决方案。
我不确定这个想法如何与其他解决方案(如白名单目录而不是链接)进行比较,或者解析传入链接以在最后清除任何恶意路径,但如果您发现一个更好或更优于此我欢迎解释为什么:)
观
白名单可行的重定向网址,并让每个页面调用它想要重定向到的链接。
代码:
ValidRedirectLinks.php
<?php
$redirect_home="/home.php";
$redirect_somePage="/somePage.php";
?>
redirection.php
<?php
function redirectTo($link){
/* pseudo code check if user is not logged in*/
if (!userLoggedIn()){
$_SESSION['redirect']=$link;
header("location:../login.php");
/* I don't know if you need an exit here or not to prevent page content
* being loaded. I think the header redirect prevents that though
* correct me if I am wrong */
}
somePage.php
<?php require_once('ValidRedirectLinks.php');
require_once('redirection.php');
redirectTo($redirect_somePage);
?>
//page content