如何从地址栏中获取网址并尝试对其进行清理以防止横向编写脚本?
例如,在此链接中,
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从地址栏获取网址,然后我应该使用什么来清理链接?
谢谢。
答案 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之后的任何内容,方法是使用空字符串替换它们。
另外请看一下这篇文章。