跨站脚本漏洞

举报
Nick Qiu 发表于 2021/03/28 01:03:59 2021/03/28
【摘要】 漏洞描述 黑客在input或者url上输入非法字符,如<ScRiPt>confirm(4890)<cRiPt>,则在网页上弹出确认窗口,相关的脚本被非法执行了。 image.png 修复方法 给程序做一个拦截器,拦截请求,转换一些特殊符号,应用中一般不会有这些特殊符号,如果有这些特殊符号,则按规则还原。 具体操作 编写一个过滤器处理转义字符 public cla...

漏洞描述

黑客在input或者url上输入非法字符,如<ScRiPt>confirm(4890)<cRiPt>,则在网页上弹出确认窗口,相关的脚本被非法执行了。

image.png

修复方法

给程序做一个拦截器,拦截请求,转换一些特殊符号,应用中一般不会有这些特殊符号,如果有这些特殊符号,则按规则还原。

具体操作

  • 编写一个过滤器处理转义字符
public class XssFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //chain.doFilter(request, response);//放行 chain.doFilter(new XssHttpServletRequestWrapperNew( (HttpServletRequest) request), response); } @Override public void init(FilterConfig arg0) throws ServletException { }
}
public class XssHttpServletRequestWraper extends HttpServletRequestWrapper { public XssHttpServletRequestWraper(HttpServletRequest request) { super(request); } @Override public String getParameter(String name) { return clearXss(super.getParameter(name)); } @Override public String getHeader(String name) { return clearXss(super.getHeader(name)); } @Override public String[] getParameterValues(String name) { // 处理路径中的转义字符 String[] values = super.getParameterValues(name); String[] newValues = new String[values.length]; for (int i = 0; i < values.length; i++) { newValues[i] = clearXss(values[i]); } return newValues; } // 清除路径中的转义字符 public String clearXss(String value) { if (value == null || "".equals(value)) { return value; } value = value.replaceAll("<", "&lt;").replaceAll(">", "&gt;"); value = value.replaceAll("\\(", "&#40;").replace("\\)", "&#41;"); value = value.replaceAll("'", "&#39;"); value = value.replaceAll("eval\\((.*)\\)", ""); value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\""); value = value.replace("script", ""); return value; }

}
  • 在web.xml中注册该过滤器
 <filter> <filter-name>XssFilter</filter-name> <filter-class>com.fangle.filter.XssFilter</filter-class> </filter> <filter-mapping> <filter-name>XssFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

文章来源: www.jianshu.com,作者:Nick_4438,版权归原作者所有,如需转载,请联系作者。

原文链接:www.jianshu.com/p/8826a0d6b4a9

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。