在php中检测传入的URL

时间:2012-03-27 07:29:32

标签: php asp.net url

大家好我在这里遇到了一些在asp.net和php.Actualy中检测url的情况我在我的asp.net页面中使用php url。例如。我正在使用像

这样的域名

www.smlsml.com.pk在这个域内我正在使用asp.net页面和在asp.net页面我调用php url就像www.phpurl.com.Problem是我想保护php url而这是从www.smlsml.com.pk调用。我的意思是当我从asp.net页面调用php url然后php url应该chek而如果从www.smlsml.com.pk调用php url然后它会如果它直接打开或除了www.smlsml.com.pk之外的任何其他打开,那么它应该重定向到我使用iframe的Myasp.aspx页面,其src是php url所以当aspx页面将调用它需要进行身份验证时。如果任何人都明白我的想法然后请帮助我在PHP或asp.net做,因为我是新的PHP和在asp.net我不知道如何保护PHP页面。请任何一个帮助或如果任何一个有更好的主意那么请分享给我。谢谢你提前

更新

$adeel = array("http://a.sml.com.pk","http://a.sml.com.pk");
if(!in_array($_SERVER['SERVER_NAME'],$adeel)){
echo "Outer";
}
else{
echo "inner";
}

1 个答案:

答案 0 :(得分:1)

我认为您正在讨论检查HTTP请求的引用者,即调用PHP脚本的URL。

此网址位于PHP-Enviroment-Variable $_SERVER['HTTP_REFERER']

但是有一点需要注意:这是一个很大的安全漏洞,因为这个推荐人很容易被伪造或遗漏。因此,您最好在可以检查的请求中传递一些安全令牌(但是您不能使用相同的会话)。

这是关于将会话令牌从ASP传递到PHP的另一个问题:

Persist Session from ASP.NET to PHP


如果您仍想使用$_SERVER['HTTP_REFERER'],您可能只想检查域,而不是完整的URI。最好是隔离域名,例如

$referrerDomain = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);

并在in_array()函数中使用它:

$adeel = array("a.sml.com.pk", "b.sml.com.pk");
    if (! in_array(referrerDomain, $adeel)){
        echo "Outer";
    }
    else {
        echo "inner";
    }