1

如何从地址栏中获取 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,那么我应该使用什么来清理链接?

谢谢你。

4

3 回答 3

2

获取方式可以参考$_SERVER['REQUEST_URI']

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

于 2013-06-08T11:55:47.440 回答
1

如果要在服务器端清理 url,请使用mysql_escape_string($_SERVER['REQUEST_URI']). 更重要的是,用于var_dump($_SERVER)查看您可以使用的所有值并使用它们。顺便说一句,你为什么要清理 URL?你想用它做什么?我假设您想将其放入数据库中,但是如果您只想从中删除所有 html 代码,浏览器已经进行了转义,因此您实际上不需要这样做...

如果您想在客户端对其进行清理,那将毫无意义,因为攻击者始终可以使用自己的工具生成自己的 http 请求,甚至不用浏览器。

于 2013-06-08T11:59:32.367 回答
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 之后的任何内容,方法是使用空替换那些细绳。

也请看看这篇文章。

从 htaccess 中的 URL 中删除不需要的字符

于 2013-06-08T12:01:12.647 回答