在PHP中转义html属性中的URL

时间:2011-05-17 01:31:51

标签: php security xss

我目前正在使用一些现有代码,该代码从请求中获取URL并将其输入到锚点源中。这显然是XSS的开放,并且使用urlencoding不会保留锚点内url的完整性。我很好奇在不破坏链接的情况下逃避数据最安全的方法是什么。

 <? 
    $url = $_REQUEST['url'];
    echo '<a href="' . $url . '">sometext</a>'; 
?>

2 个答案:

答案 0 :(得分:4)

htmlspecialchars($url)会将HTML敏感字符转换为其实体等效字符。但是,也可以将javascript片段插入到URL中 - 我个人不了解其中的详细信息。更复杂的解决方案(例如HTML Purifier)可以帮助您覆盖大多数漏洞。

答案 1 :(得分:4)

还有filter_var,其中包含一组您可以使用的预定义过滤器,其中一个我认为是针对网址的:http://php.net/manual/en/function.filter-var.php

修改:Yup:清理过滤器:http://www.php.net/manual/en/filter.filters.sanitize.php