【问题标题】:detect incoming url in php在php中检测传入的url
【发布时间】:2012-03-27 07:29:31
【问题描述】:

大家好,我在这里面临一些在 asp.net 和 php 中检测 url 的情况。实际上我在我的 asp.net 页面中使用 php url。例如。我正在使用类似的域

www.smlsml.com.pk 在这个域内我正在使用 asp.net 页面,在 asp.net 页面中我调用 php url,如 www.phpurl.com。问题是我想保护 php url 同时这是从 www.smlsml.com.pk 调用的。我的意思是当我从 asp.net 页面调用 php url 时,php url 应该检查,而如果从 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";
}

【问题讨论】:

    标签: php asp.net url


    【解决方案1】:

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

    此 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";
        }
    

    【讨论】:

    • 先生,我在更新时在 php 页面中使用了上述代码,但这并没有做任何事情,请您检查一下或对此进行任何修改
    • 您使用的是$_SERVER['SERVER_NAME'],它包含实际运行此脚本的服务器的名称,但您需要使用$_SERVER['HTTP_REFERER'](请参阅我的帖子)。但请记住,$_SERVER['HTTP_REFERER'] 包含完整的 URI,因此您需要将域名后面的任何内容都剪掉以进行检查。
    猜你喜欢
    • 2013-08-06
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 2014-05-22
    • 2016-08-24
    • 2018-01-08
    • 1970-01-01
    • 2016-09-04
    相关资源
    最近更新 更多