我如何从地址栏获得url并尝试对其进行消毒以防止跨端脚本?
例如在这个链接中
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从地址栏获取url,那么我应该使用什么来消毒链接?
谢谢。
可参考$_SERVER['REQUEST_URI']
获取。
如果您想将其附加到HTML中,请使用htmlspecialchars()
转义。
For url
$ url = " http://", $ _SERVER [' HTTP_HOST ']。$ _SERVER [' REQUEST_URI ']
查看此链接了解详情
http://www.phpeasystep.com/phptu/27.html如rid所说,您可以使用
进行消毒htmlspecialchars函数()(http://ca3.php.net/htmlspecialchars)
相反,您可以使用http://php.net/manual/en/function.preg-replace.php来净化您收到的$url,通过使用它,您可以通过使用空字符串替换那些来删除.php之后的任何内容。
也请看看这篇文章。
删除URL中不需要的字符
如果要对服务器端的url进行消毒,请使用mysql_escape_string($_SERVER['REQUEST_URI'])
。更重要的是,使用var_dump($_SERVER)
来查看所有可以使用的值,并对它们进行调整。顺便说一句,为什么要对URL进行消毒?你想用它做什么?我假设你想把它放入数据库,但如果你只是想从它中删除所有的html代码,浏览器已经做转义,所以你真的不需要这样做…
如果您想在客户端对其进行消毒,那将没有意义,因为攻击者总是可以使用自己的工具生成自己的http请求,甚至不使用浏览器。