来自地址栏的PHP Sanitize Url

时间:2013-06-08 11:53:15

标签: php mysql

如何从地址栏中获取网址并尝试对其进行清理以防止横向编写脚本?

例如,在此链接中,

www.somesite.com/login/login.php 

如何阻止

www.somesite.com/login/login.php/"><h2>This%20is%20our%20cookie<h2>         
<script>document.write%28document.cookie%29</script></h2>

我是否使用$ _SERVER从地址栏获取网址,然后我应该使用什么来清理链接?

谢谢。

3 个答案:

答案 0 :(得分:2)

要获得它,您可以参考$_SERVER['REQUEST_URI']

如果要将其附加到HTML,请使用htmlspecialchars()将其转义。

答案 1 :(得分:1)

如果要清理服务器端的网址,请使用mysql_escape_string($_SERVER['REQUEST_URI'])。更重要的是,使用var_dump($_SERVER)查看您可以使用的所有值并使用它们。顺便问一下,为什么要清理URL?你想用它做什么?我以为你想把它放到一个数据库中,但如果你想从中删除所有的html代码,浏览器就已经进行了转义,所以你真的不需要这样做......

如果你想在客户端清理它,那就没有意义了,因为攻击者总是可以使用自己的工具生成自己的http请求,甚至不使用浏览器。

答案 2 :(得分:1)

对于网址

$ url =“http://”。$ _ SERVER ['HTTP_HOST']。$ _ SERVER ['REQUEST_URI']

查看此链接了解详情

http://www.phpeasystep.com/phptu/27.html

对于清理,因为摆脱说你可以使用

htmlspecialchars()(http://ca3.php.net/htmlspecialchars

相反,您可以使用http://php.net/manual/en/function.preg-replace.php来清理您收到的$ url,通过使用它可以删除.php之后的任何内容,方法是使用空字符串替换它们。

另外请看一下这篇文章。

Removing unwanted characters from URL in htaccess