代码之家  ›  专栏  ›  技术社区  ›  djn

用户输入过滤-我需要过滤HTML吗?

  •  5
  • djn  · 技术社区  · 15 年前

    注意:我负责其他地方的SQL注入和输出转义——这个问题只涉及输入过滤,谢谢。

    我正在重构我的用户输入过滤函数。在将get/post参数传递给特定于类型的筛选器之前, filter_var() 我执行以下操作:

    现在的问题是:将参数传递给类似于 htmLawed HTML Purifier 或者我可以认为输入是安全的吗?在我看来,这两种方法在允许的HTML元素和属性(我不感兴趣,因为我删除了所有内容)的粒度上差别很大,但是htmlawed文档有一节关于' dangerous characters “这表明可能有理由使用它。在这种情况下,它的健全配置是什么?

    2 回复  |  直到 13 年前
        1
  •  2
  •   slugster Joey Cai    13 年前

    安全的XSS有许多不同的方法。唯一知道你的方法是否有效的原因是通过开发来测试。我建议使用 Free XSS vulnerability Scanner *或开源 wapiti .

    老实说,我永远不会使用strip_tags(),因为您并不总是需要HTML标记来执行javascript!我喜欢 htmlspecialchars($var,ENT_QUOTES); .

    例如,这很容易受到XSS的攻击:

    print('<A HREF="http://www.xssed.com/'.strip_tags($_REQUEST[xss]).'">link</a>');
    

    在这种情况下,您不需要执行javascript,因为您可以使用 OnMouseOver,这里是一个示例攻击:

    $_REQUEST[xss]='" onMouseOver="alert(/xss/)"';
    

    ent_引号将处理双引号,这将修补此XSS漏洞。

    *我与此网站/服务有关联。

        2
  •  0
  •   Gabriel    15 年前

    我认为你所做的是安全的,至少在我看来,没有HTML代码可以通过你的过滤器。