浏览 1920 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-06-11
http://www.hetaoblog.com/%E6%88%91%E7%9A%84%E7%AC%AC%E4%B8%80%E6%AC%A1%E5%BC%80%E6%BA%90-hetaoblogxsshtmlfilter-%E6%94%B9%E8%BF%9B%E4%BA%86%E4%B8%80%E4%B8%AAjava%E7%89%88%E5%BC%80%E6%BA%90%E7%9A%84xss-html-filter/
转自搞防止xss的时候,找了一圈发现比较简单易用的属于这个, http://xss-html-filter.sourceforge.net/ 下面是作者的页面 http://josephoconnell.com/java/xss-html-filter/ 不过这个xss html filter有个问题,不支持对属性值的过滤设定, 简单的说,下面的style是合法的 <span style=”color:#121212;”></span> 下面的style是非法的,有xss攻击漏洞 <span STYLE=”xss:expression(alert(‘XSS’))”>2</span> 但是原来的版本只能要么支持style属性,要么不支持style属性,不能设置支持style里面的某些内容 所以我改进了一下,代码在这里,欢迎提出改进意见 http://hetaoblog.googlecode.com/files/HetaoBlogXssHTMLFilter.java 我喜欢简洁的修改代码完成,所以设置的允许的html元素、属性和属性的值直接修改构造函数:) 使用上: * 1. 修改构造函数 HetaoBlogXssHTMLFilter() 选择允许的html元素、属性和属性的值 下面是部分例子 { final ArrayList<Attribute> span_atts = new ArrayList<Attribute>(); Map<String, Pattern> allowedAttrValues = new HashMap<String, Pattern>(); allowedAttrValues.put(“color”, Pattern.compile(“(#([0-9a-fA-F]{6}|[0-9a-fA-F]{3}))”)); allowedAttrValues.put(“font-weight”, Pattern.compile(“bold”)); allowedAttrValues.put(“text-align”, Pattern.compile(“(center|right|justify)”)); allowedAttrValues.put(“font-style”, Pattern.compile(“italic”)); allowedAttrValues.put(“text-decoration”, Pattern.compile(“underline”)); allowedAttrValues.put(“margin-left”, Pattern.compile(“[0-9]+px”)); allowedAttrValues.put(“text-align”, Pattern.compile(“center”)); span_atts.add(new Attribute(“style”, allowedAttrValues)); vAllowed.put(“span”, span_atts); } { final ArrayList<Attribute> div_atts = new ArrayList<Attribute>(); div_atts.add(new Attribute(“class”)); div_atts.add(new Attribute(“align”)); vAllowed.put(“div”, div_atts); } * 2. 调用类似这样的函数String outHtml = HetaoBlogXssHTMLFilter.filter(sourceHtmlString); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |