zoukankan      html  css  js  c++  java
  • WEB防XSS攻击

    web开发中的常见漏洞,一般都发生在这些输入框中,一般情况我们会对这些输入域进行客户端的校验和服务器端的校验,但是在客户端的校验基本上起不来什么作用,因为客户端的所有代码我们都可以进行更改,防止漏洞的发生还是需要服务器端的校验,但是一般服务器端的校验都是校验你输入的字符或者是数字的长度等等。下面就演示一个XSS的漏洞注入,JSP页面中有两个输入框,姓名和个人介绍。当我们写入姓名和个人介绍之后,后台代码的处理就是进行一个简单的转发,然后把我们刚才的信息转发到一个jsp页面进行显示。

    如果我们在个人介绍写上<script>document.location.href='http://www.baidu.com'</script>,那么提交之就跳转到百度了,如果跳转到xxoo网站呢,这不就坏事了嘛。

    我们需要自己在后台对这些特殊的字符进行转码,当这些字符再次显示到页面的时候不执行脚本。

    使用什么样的方法才能阻止这种情况的发生,就是对 HTML 中的预留字符替换为字符实体 ,例如:对< 进行替换成 &lt,对>替换成&gt  等等。在这里把我们的代码进行一下完善防止XSS的出现:

    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            
            String username = req.getParameter("username");
            String describe = req.getParameter("describe");
            if(username == null || describe == null){
                username ="aaaa";
                describe="helloworld<script>alert('hello world');</script>";
            }
            //HTML 中的预留字符必须被替换为字符实体
            username = StringEscapeUtils.escapeHtml4(username);
            describe = StringEscapeUtils.escapeHtml4(describe);
            
            System.out.println(username +" : "+ describe);
            
            req.setAttribute("username", username);
            req.setAttribute("describe", describe);
            
            req.getRequestDispatcher("/info.jsp").forward(req, resp);
        }

    这样我们就可以简单的防止XSS夸脚本攻击,代码中的 StringEscapeUtils是apache common-lang 包下的一个工具类,这个工具类也可以对sql中的保留字符进行转换,同时我们自己也可以自己实现一个对html中的预留字进行替换的程序。在后台打印的describe的字符已经被替换为:

    helloworld&lt;script&gt;alert('hello world');&lt;/script&gt;  把这些内容显示在html中是不会执行javascript脚本的。

  • 相关阅读:
    无废话ExtJs 入门教程三[窗体:Window组件]
    无废话ExtJs 入门教程四[表单:FormPanel]
    无废话ExtJs 入门教程一[学习方法]
    无废话ExtJs 入门教程五[文本框:TextField]
    关于飞思卡尔xs128的IO端口
    can总线学习(二)
    D触发器的二分频电路
    第一天在公司
    can总线学习(一)——初识can总线
    SP debug info incorrect because of optimization or inline assembler
  • 原文地址:https://www.cnblogs.com/yinghao/p/5522721.html
Copyright © 2011-2022 走看看