跨站点脚本编制问题 大家帮忙看看

奈伊组特 2013-02-05 09:49:46
现在有几个tomcat5.5的网站,最近扫描说有跨站点脚本漏洞,要求消灭漏洞,但是发现扫描结果里面除了有jsp页面外,还有不少静态html页面也有漏洞,网上查询了下 发现比如页面地址是http://www.xxx.com/userlist.html 这样的页面 如果在地址后面加入script 比如 http://www.xxx.com/userlist.html<script>alert("1212");</script> 这样会执行stript的内容。怎么防止这样的问题呢?
...全文
436 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
提示方式改为post不就行了,form表单里面加上method="post"
  • 打赏
  • 举报
回复
奈伊组特 2013-02-05
这篇文章里的
http://www.rising.com.cn/newsletter/news/2012-04-25/11387.html

就是会执行 在地址后面输入的脚本内容 怎么能不让这些脚本执行呢?
  • 打赏
  • 举报
回复
奈伊组特 2013-02-05
正常情况下,用户会在URL中提交参数name的值为自己的姓名,然后该数据内容会通过以上代码在页面中展示,如用户提交姓名为“张三”,完整的URL地址如下: http://localhost/test.php?name=张三 此时,因为用户输入的数据信息为正常数据信息,经过脚本处理以后页面反馈的源码内容为<p>欢迎您, 张三!</p>。但是如果用户提交的数据中包含有可能被浏览器执行的代码的话,会是一种什么情况呢?我们继续提交name的值为<script>alert(/我的名字是张三/)</script>,即完整的URL地址为 http://localhost/test.php?name=<script>alert(/我的名字是张三/)</script> 在浏览器中访问时,我们发现会有弹窗提示
  • 打赏
  • 举报
回复
post提交。不是特别明白你的意思,脚本语句是怎么来的
  • 打赏
  • 举报
回复
奈伊组特 2013-02-05
网上找到的 不过加入到网站里面 所有页面访问都直接变404错误了 不知道为啥,java不是很懂
filter过滤请求中参数里含有脚本的部分
<!--web.xml 中配置 -->
<!-- 过滤请求中参数里含有脚本的部分 -->
<filter>
   <filter-name>filtrateRequestParamterFilter</filter-name>
   <filter-class>com.cssweb.common.web.filter.FiltrateRequestParamterFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>filtrateRequestParamterFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>
代码:
package com.cssweb.common.web.filter;
import java.io.IOException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FiltrateRequestParamterFilter implements Filter {
private static Pattern SCRIPT_PATTERN = Pattern.compile("<script.*>.*<\\/script\\s*>");

public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
   Map<String,String[]> paramMap=request.getParameterMap();
   String[] paras=null;
   int flag=0;
   String lowStr=null;
  
   Iterator   it=paramMap.keySet().iterator();
        while   (it.hasNext())   
        {   
        String key=it.next().toString();
    paras=paramMap.get(key);
    if(paras!=null && paras.length>0) {
     for(int i=0;i<paras.length;i++) {
      paras[i]=paras[i].replaceAll("'","''");
    //       System.out.println("====================1>"+lowStr);
      lowStr=paras[i].toLowerCase();
     
      //script
      Matcher m = SCRIPT_PATTERN.matcher(lowStr);
      if(m.find()) {
       flag=1;
      }
     
      if(flag == 1 || lowStr.contains("alert")) {
       flag=1;
      }
     
      if(flag == 1 || lowStr.contains("javascript") || lowStr.contains("script") || lowStr.contains("expression")) {
       flag=1;
      }
     
      //sql
      if(flag == 1 || lowStr.contains("ascii(") || lowStr.contains("ascii (") || lowStr.contains("chr(") || lowStr.contains("chr (") || lowStr.contains("%0d") || lowStr.contains("%0a") || lowStr.contains("--") || lowStr.contains("*/")) {
       flag=1;
      }
     
      //sql
      if(flag == 1 || lowStr.contains("alter ") || lowStr.contains("create ") || lowStr.contains("truncate ") || lowStr.contains("drop ") || lowStr.contains("lock table") || lowStr.contains("insert ") || lowStr.contains("update ") || lowStr.contains("delete ") || lowStr.contains("select ") || lowStr.contains("grant ") || lowStr.contains("and ") || lowStr.contains("where ") || lowStr.contains("or ") || lowStr.contains("document.write ") || lowStr.contains("count ") || lowStr.contains("exec ") || lowStr.contains("union") || lowStr.contains("||") || lowStr.contains("' || '' || '")) {
       flag=1;
      }
     
      //sql
      //if(flag==1 || lowStr.contains(" where ") || lowStr.contains(" and ") || lowStr.contains(" or ")) {
      if(flag==1 || lowStr.contains(" where ") || lowStr.contains(" or ")) {
       flag=1;
      }
     
      if(flag==1){
       HttpServletRequest httpServletRequest=(HttpServletRequest) request;
       HttpServletResponse httpServletResponse=(HttpServletResponse) response;
       httpServletRequest.getSession().setAttribute("url", httpServletRequest.getQueryString());
       System.out.println(httpServletRequest.getSession().getId());
       httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/commons/bad.jsp");
       return ;
      }
     }
    }
   }
   chain.doFilter(request, response);
// System.out.println("====================2>"+lowStr);
}
public void init(FilterConfig arg0) throws ServletException {
}

}
  • 打赏
  • 举报
回复
相关推荐
发帖
Web 开发
加入

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2013-02-05 09:49
社区公告
暂无公告