`

跨站脚本注入问题详解

    博客分类:
  • Java
阅读更多

===========================问题描述========================
跨站脚本注入的几种形式

*****="/><script>alert(document.cookie)</script>&passwd=&ok.x=28&ok.y=6


******="/><script>window.open("http://www.baidu.com")</script>

 

/document/ifr_list_managerHalfway.jsp?subFrame=managerHalfway&Page=2&Pages=2&Count=15&docsfrom="/><script>window.open("http://www.baidu.com")</script>

 

document/ifr_list_managerHalfway.jsp?docucode=&organiger=&manageEntityId=&Page=1&queryOwn=0&procstatus=&docsfrom=5&subFrame=managerHalfway&docsfrom=5&beginDate=&cbt=&procid=&cfwdw=&wenhao=%5C0%5C%22%5C%27%3E%3CScRiPt%3Ealert%28/shtec%2Bxss%2Btest/%29%3B%3C/ScRiPt%3E


document/ifr_list_managerHalfway.jsp?docucode=&organiger=&manageEntityId=&Page=1&queryOwn=0&procstatus=&docsfrom=5&subFrame=managerHalfway&docsfrom=5&beginDate=&cbt=&procid=&cfwdw="/><script>window.open("http://www.baidu.com")</script>&wenhao="/><script>window.open("http://www.baidu.com")</script>


以上的几种跨站点脚本注入会使页面非正常显示

 

===========================解决方案========================
1。增加一个request的转码过滤器=======================
package com.apusic.portal.sso;

import java.io.IOException;
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.*;
import java.util.*;

/**
 * Servlet Filter implementation class SqlEscapeFilter
 */
public class SqlEscapeFilter implements Filter {

    /**
     * Default constructor.
     */
    public SqlEscapeFilter() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @see Filter#destroy()
     */
    public void destroy() {
        // TODO Auto-generated method stub
    }

    /**
     * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
     */
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        // TODO Auto-generated method stub
        // place your code here
        HttpServletRequest hreq = (HttpServletRequest)request;
        Map map = hreq.getParameterMap();
        Iterator itr = map.keySet().iterator();
        while( itr.hasNext() )
        {
            String key = itr.next().toString();
            String [] values = hreq.getParameterValues(key);
            if( values != null )
            {
                for( int i = 0; i < values.length; i++ )
                {
                    values[i] = cleanXSS(values[i]);
                }
            }
            hreq.setAttribute(key, values);
        }
        // pass the request along the filter chain
        chain.doFilter(request, response);
    }

    /**
     * @see Filter#init(FilterConfig)
     */
    public void init(FilterConfig fConfig) throws ServletException {
        // TODO Auto-generated method stub
    }
    private String cleanXSS(String value)
    {
        value = value.replaceAll("<", "& lt;").replaceAll(">", "& gt;");

        value = value.replaceAll("\\(", "& #40;").replaceAll("\\)", "&#41;");

        value = value.replaceAll("'", "& #39;");

        value = value.replaceAll("eval\\((.*)\\)", "");

        value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\"");

        value = value.replaceAll("script", "");

        return value;
    }

}


2================================
web.xml

<filter>
     <display-name>SqlEscapeFilter</display-name>
     <filter-name>SqlEscapeFilter</filter-name>
     <filter-class>com.apusic.portal.sso.SqlEscapeFilter</filter-class>
   </filter>
    <filter-mapping>
     <filter-name>SqlEscapeFilter</filter-name>
     <url-pattern>*.jsp</url-pattern>
    </filter-mapping>

分享到:
评论

相关推荐

    xss跨站脚本攻击详解

    ### XSS跨站脚本攻击详解 #### 一、XSS攻击概述 XSS攻击,全称为**跨站脚本攻击**(Cross Site Scripting),是一种常见的网络安全漏洞,它发生在Web应用程序未能正确过滤用户输入的数据时。攻击者可以借此机会将...

    XSS跨站脚本攻击

    ### XSS跨站脚本攻击详解 #### 一、XSS跨站脚本攻击概述 XSS(Cross-Site Scripting)跨站脚本攻击是一种常见的Web应用安全威胁,其核心在于利用网站对用户输入数据的处理不当,允许攻击者注入恶意脚本到网页中,...

    xss跨站脚本攻击与预防

    **XSS跨站脚本攻击详解** XSS(Cross Site Scripting)跨站脚本攻击是一种常见的网络安全漏洞,它允许攻击者在用户浏览器上执行恶意脚本,从而获取敏感信息或者操控用户的行为。这种攻击主要发生在Web应用中,攻击...

    跨站脚本,参考学习

    ### 跨站脚本(XSS)详解 #### 一、跨站脚本(XSS)概述 跨站脚本(Cross-Site Scripting,简称XSS)是一种常见的网站安全漏洞,攻击者通过注入恶意脚本代码到信任的网页上,当用户浏览该网页时,嵌入其中的恶意脚本会...

    xss跨站脚本攻击

    ### XSS跨站脚本攻击详解 #### 一、XSS跨站脚本攻击概述 XSS(Cross-Site Scripting),即跨站脚本攻击,是一种常见的网络安全威胁,主要通过在受害者的浏览器环境中注入恶意脚本,从而实现对用户的攻击。这种攻击...

    XSS跨站脚本攻击课件

    【XSS跨站脚本攻击】详解 XSS(Cross-Site Scripting)跨站脚本攻击是网络攻防领域中的常见威胁,攻击者利用这种技术向网页中注入恶意脚本,进而对用户的信息安全构成严重风险。由于浏览器通常无法区分合法与恶意...

    Xss跨站脚本攻击基础

    XSS攻击的核心在于将恶意脚本注入到正常的数据流中,并通过某种途径让用户触发执行这些恶意脚本。根据攻击方式的不同,XSS攻击可以分为三类: 1. **存储型XSS**:攻击者将恶意脚本保存在服务器端,一旦用户访问被...

    sql注入测试脚本

    ### SQL注入测试脚本知识点详解 #### 一、SQL注入简介 SQL注入是一种常见的Web应用程序安全漏洞,攻击者可以通过在应用程序的输入字段中插入恶意SQL语句来操纵数据库执行非授权操作。为了检测和防范此类攻击,渗透...

    注入的代码注入的代码注入的代码注入的代码注入的代码

    4. XSS(跨站脚本)注入:XSS攻击发生在Web应用中,恶意脚本被嵌入到其他用户可以查看的页面上。这可能用于盗取用户的Cookie、会话信息,或者进行钓鱼攻击。 5. XXE(XML外部实体注入):当应用程序解析不受信任的...

    PHP脚本编程安全详解教程

    1. **输入验证和过滤**:PHP脚本容易受到SQL注入、跨站脚本(XSS)等攻击。通过使用预处理语句、参数绑定(例如PDO和mysqli扩展)以及过滤函数(如filter_var)可以有效防止SQL注入。对于XSS攻击,可以利用...

    DVWA之SQL注入详解(包含知识点)

    SQL注入是网络安全领域中的一种常见的攻击手段,它允许攻击者通过在应用程序的输入参数中插入恶意的SQL代码片段,从而在数据库服务器上执行未授权的查询或操作。这种攻击方法对数据库安全构成了极大的威胁,因此了解...

    xss攻击详解,跨站攻击详解

    XSS攻击,全称为跨站脚本攻击(Cross-Site Scripting),是一种常见的网络攻击手段,它允许攻击者将恶意脚本代码注入到用户浏览器中。这些代码在用户浏览网页时执行,可以盗取cookie、会话令牌、或者在用户不知情的...

    ASP脚本攻防详解知识

    2. 跨站脚本攻击(XSS):攻击者在用户界面插入恶意脚本,使得其他用户在访问时执行这些脚本,可能导致信息泄露或身份冒用。 3. 文件包含漏洞:通过构造特定参数,使服务器执行非预期的文件,可能导致系统敏感信息泄露...

    XSS跨站攻击,注入代码整理,大全

    ### XSS跨站攻击详解与注入代码实例 #### 一、XSS概述 XSS(Cross Site Scripting)即跨站脚本攻击,是一种常见的Web安全漏洞。它通过将恶意脚本注入到看似可信的网站中,进而攻击最终用户。XSS攻击主要分为三种...

    COOKIES注入php-5教程及脚本

    这个工具可能包括了注入攻击的模拟脚本,也可能有用于检测和防止注入的安全脚本。 综上所述,这个教程和脚本集应该帮助学习者理解Cookie注入的机制,包括如何利用和防止。在学习过程中,他们将接触到PHP 5的语法,...

    ASP类网站SQL注入方法详解.doc

    ASP(Active Server Pages)是一种微软开发的服务器端脚本环境,用于创建动态网页或Web应用程序。SQL注入是一种常见的网络安全漏洞,攻击者通过输入恶意的SQL语句来获取、修改、删除数据库中的敏感信息,或者控制...

    1、 web脚本攻击 2、 IIS安全设置

    此外,实验还涵盖了如何通过特定的页面设计和JavaScript代码实现跨站脚本攻击,以及如何利用跨站脚本盗取cookies。例如,通过使用`window.frames[0]`和`location`属性来控制子页面的行为,从而注入并执行恶意脚本,...

    三种数据库的 SQL 注入详解

    三种数据库的 SQL 注入详解 SQL 注入是指攻击者通过构建特殊的输入作为参数传入 Web 应用程序,而这些输入大都是 SQL 语法里的组合,通过执行 SQL 语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤...

Global site tag (gtag.js) - Google Analytics