重定向的服务器请求URI替代实现

时间:2015-01-20 17:03:15

标签: php security redirect

我们都知道'$ _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

0 个答案:

没有答案