如何修复PHP中的开放重定向?

时间:2017-11-30 07:14:02

标签: php security

我对PHP并不了解,我觉得这里问这个问题是愚蠢的。 我们如何修复php中的开放重定向问题? 例如在下面的代码中。

if($_GET["target"]) {
    $target =$_GET["target"];
    header("Location: $target");
}else {
    echo "No target!";
}

我正在尝试将http://localhost:81/ *以外的所有内容重定向到http://localhost:/81,如果我提供输入http://localhost:81/something,则应将其重定向,并将所有其他内容重定向到{{ 3}}。

我尝试更改标题("位置:http://localhost:81/")但是它将所有内容重定向到http://localhost:81/ 如何编辑或修复此问题以不包含http://localhost:81/的重定向?

2 个答案:

答案 0 :(得分:2)

只需获取$ _GET ['target']值并检查天气是否为'某事'。如果该值不是“某事”,则将它们全部重定向到您想要的位置。

试试这个!

if( isset( $_GET['target'] ) ) {
    $page = $_GET['target'];
    if( $page != 'something' ) {
        header("Location: Your url here");  // Change the text with your url
    }
}

答案 1 :(得分:0)

$ _SERVER超级全局中可用的URL的所有组件都有变量。

例如,看看这些变量:

echo $_SERVER['REQUEST_SCHEME'];
echo $_SERVER['HTTP_HOST'];
echo $_SERVER[['REQUEST_URI'];

还有parse_url函数将获取一个url并返回一个数组,并将其分成几部分。一旦你把它分成几部分,你的评估和重定向应该很容易。