各位大虾好。新手请教一个问题。在如下地址,
login.jsp?returnURL=%2FECS%2Fmodules%2Fframe%2Findex.jsp%22%3e%3csCrIpT%3ealert(81116)%3c%2fsCrIpT%3e如何处理这个跨脚本攻击问题?
我在jsp里面修改了returnURL,
部分代码如下        String returnURL = request.getParameter("returnURL");
if (null == returnURL)
{returnURL = "";}
         else
        {  returnURL=returnURL.replaceAll( "<","&lt");   
           returnURL=returnURL.replaceAll( ">","&gt"); 
        }          String returnURL0 = request.getParameter("RETURNURL");         //对这些参数解码
       if(returnURL0 != null && returnURL0.length() != 0) {
            returnURL0 = new String(returnURL0.getBytes("ISO-8859-1"), "UTF-8"); 
         returnURL0 = URLDecoder.decode(returnURL0, "UTF-8");
            returnURL0=URLEncoder.encode(returnURL0, "UTF-8");        }这样确实避免了alert()运行,
请问还有其他工作要做的吗?不止是replace“<”“>”,还要屏蔽其他字符吗

解决方案 »

  1.   

    恩,XSS攻击本来就是针对浏览者的 ^_^像这种数据,一定要有一个合理的过滤方法,楼主可以搜索看其他人是如何处理XSS的!
      

  2.   

    LS说的很有道理,对于一些脚本必须处理好,否则XSS会很容易被利用。
      

  3.   

    1.首先  编码
    2,仿照阿里巴巴 的淘宝  对各个参数  按一定顺序并接后  处md5理  具体见淘宝开源api
      

  4.   

    最安全的方法就是不要把从URL取回的参数再次插入到文档里即可。
    即使你屏蔽了一些特殊字符,而攻击者可以使用Unicode码直接发送,
    就类似于这样:\u2356这样的代码你是屏蔽不了的。