JAVA漏洞修复-XSS漏洞

释放双眼,带上耳机,听听看~!

Struts框架

struts1中的<bean:write>标签:该标签中有个属性filter默认值为true,会将输出内容中的特殊HTML符号作为普通字符串来显示

<% String test="<script>alert(1)</script>"; request.serAttribute("test",test);%><bean:write name="test"/></BR><bean:write name="test" filter="false"/>

struts2中的<s:property>标签:该标签默认情况下,会自动进行html编码

<s:property value="%{name}" />

该标签部份源码如下:

public class PropertyTag extends ComponentTagSupport {
private static final long serialVersionUID = 435308349113743852L;
private String defaultValue; private String value; private boolean escapeHtml = true; private boolean escapeJavaScript = false; private boolean escapeXml = false; private boolean escapeCsv = false;
public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) { return new Property(stack); }
protected void populateParams() { super.populateParams();
Property tag = (Property) component; tag.setDefault(defaultValue); tag.setValue(value); tag.setEscape(escapeHtml); tag.setEscapeJavaScript(escapeJavaScript); tag.setEscapeXml(escapeXml); tag.setEscapeCsv(escapeCsv); }

最底层的实现是依赖于commons-lang3包中的StringEscapeUtils.escapeHtml4(String)完成的。


ESAPI

  1. HTML编码

    String ESAPI.encoder().encodeForHTML(string)
    原理:空格,字母,数字不进行编码,如果有特殊字符在HTML中的替代品,就使用替代的方式,如引号(“)可以被 &quot;替代,大于号(>)可以被&gt;替换

  2. HTML属性编码
    String ESAPI.encoder().encodeForHTMLAttribute(string)
    原理与HTML编码相同,唯一不同的就是不编码空格

  3. JavaScript编码
    String ESAPI.encoder().encodeForJavaScript(String)
    原理:如果是数字,字母,直接返回,如果是小于256的字符,就使用\xHH的编码方式,如果是大于256的字符则使用\uHHHHH方式编码

  4. CSS编码
    String ESAPI.encoder().encodeForCSS(String)
    原理:反斜杠()加上十六进制数进行编码

  5. URL编码
    String ESAPI.encoder().encodeForURL(String)200489251863
    原理:先将字符串转换为UTF-8,对转换之后的字符串用%加上十六进制数的方式编码


补充一个面试题

以前在面试时,我经常会问到一个问题:如果一个应用在测试时发现了几十个XSS漏洞,那么你会如何修复呢?

这里我们可以自定义一个xssFilter的过滤器,再自定义一下XssWrapper继承自HttpServletRequestWrapper,将所有请求参数使用commons-lang3包的StringEscapeUtils.escapeHtml4(String)方法过滤一下即可

人已赞赏
安全工具

信安从业者必备的证书

2019-10-11 17:03:31

安全工具

CobaltStrike中文使用手册-安装及功能介绍篇

2019-10-11 17:03:39

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索