【问题标题】:Request url on a save way以保存方式请求 url
【发布时间】:2013-05-21 14:42:38
【问题描述】:

我想阅读一个网址。 www.domain.com?cookie=set&redirect=yes

现在我想使用$ _SERVER['REQUEST_URI'],但这不适用于strip_tagshtmlspecialchars

我读到的还有很多你应该注意 XSS。

有谁知道如何保存一个可以被 GET 使用的 URL?

$url = "http://'.$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI];
$url = strip_tags($url);//doesnt work
$url = htmlspecialchars($url);//doesnt work

谢谢!

编辑为(不起作用):

$url = "http://".$_SERVER[HTTP_HOST]."".$_SERVER[REQUEST_URI];
$url = strip_tags($url);
echo $url;

例如 www.domain.com?cookie=set&reddirect=yes

输出 => index.php?cookie=se%3Cscript%3Et&re%3Cb%3Ed%3C/b%3Eirect=yes

【问题讨论】:

    标签: php url get request


    【解决方案1】:

    这一行

    $url = "http://'.$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI];
    

    需要两者之一

    $url = "http://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
    

    $url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    

    您当前的操作方式无法正确连接数据。

    您的线路有问题:

    1. 您在协议周围的混合引号 " 打开和 ' 关闭
    2. 您没有引用 $_SERVER 参数,例如 $_SERVER['PARAM']
    3. 您没有加入 2 个 $_SERVER 变量,因此您会收到语法错误

    【讨论】:

    • 好吧,我改了,但 strip_tags 和 htmlspecialchars 仍然不起作用
    • Strip 标签在这种情况下不会做任何事情,因为 $_SERVER 值将被 URL 编码,因此 <script> 将是 %3Cscript%3E,这不是 tag 在感觉strip_tags 正在寻找。您需要先urldecode 字符串
    • 也不起作用... ?redirect=set echo urldecode($_SERVER['REQUEST_URI']);
    猜你喜欢
    • 2012-09-19
    • 2018-06-15
    • 2010-11-21
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多