如何从地址栏中获取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,然后我应该使用什么来清理链接?
谢谢。
发布于 2013-06-08 20:01:13
对于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之后的任何内容来删除这些内容。
也请看看这篇文章。
发布于 2013-06-08 19:55:47
要获取它,您可以参考$_SERVER['REQUEST_URI']。
如果你想把它附加到超文本标记语言中,使用htmlspecialchars()对它进行转义。
发布于 2013-06-08 19:59:32
如果您想在服务器端清理url,请使用mysql_escape_string($_SERVER['REQUEST_URI'])。更重要的是,使用var_dump($_SERVER)查看您可以使用的所有值并使用它们。顺便说一句,你为什么要清理URL?你想用它做什么?我假设你想把它放到一个数据库中,但是如果你只是想从数据库中删除所有的html代码,浏览器已经在进行转义了,所以你并不真的需要这样做……
如果你想在客户端清理它,那是没有意义的,因为攻击者总是可以使用他自己的工具生成他自己的http请求,甚至不使用浏览器。
https://stackoverflow.com/questions/16999264
复制相似问题