XSS攻击防御篇
前言
解决方案
- 方案一
- <span style="font-family:Comic Sans MS;">web.xml
- <context-param>
- <param-name>defaultHtmlEscape</param-name>
- <param-value>true</param-value>
- </context-param>
- Forms
- <spring:htmlEscape defaultHtmlEscape="true" /></span><span style="font-family:微软雅黑;">
- </span>
- 方案二
- 方案三
- <span style="font-family:Comic Sans MS;">package com.sic.web.beans;
- import java.util.Enumeration;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletRequestWrapper;
- public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
- public XssHttpServletRequestWrapper(HttpServletRequest servletRequest) {
- super(servletRequest);
- }
- public String[] getParameterValues(String parameter) {
- String[] values = super.getParameterValues(parameter);
- if (values==null) {
- return null;
- }
- int count = values.length;
- String[] encodedValues = new String[count];
- for (int i = 0; i < count; i++) {
- encodedValues[i] = cleanXSS(values[i]);
- }
- return encodedValues;
- }
- public String getParameter(String parameter) {
- String value = super.getParameter(parameter);
- if (value == null) {
- return null;
- }
- return cleanXSS(value);
- }
- public String getHeader(String name) {
- String value = super.getHeader(name);
- if (value == null)
- return null;
- return cleanXSS(value);
- }
- 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;
- }
- } </span>
- <span style="font-family:Comic Sans MS;">package com.sic.web.beans;
- 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.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class XssFilter implements Filter {
- FilterConfig filterConfig = null;
- public void init(FilterConfig filterConfig) throws ServletException {
- this.filterConfig = filterConfig;
- }
- public void destroy() {
- this.filterConfig = null;
- }
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- chain.doFilter(new XssHttpServletRequestWrapper(
- (HttpServletRequest) request), response);
- }
- }</span>
- <span style="font-family:Comic Sans MS;"><filter>
- <filter-name>XssSqlFilter</filter-name>
- <filter-class>com.ibm.web.beans.XssFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>XssSqlFilter</filter-name>
- <url-pattern>/*</url-pattern>
- <dispatcher>REQUEST</dispatcher>
- </filter-mapping></span>
一个实例
- <span style="font-family:Comic Sans MS;">输入用户名 : >"'><script>alert(1779)</script>
- 输入用户名: usera>"'><img src="javascript:alert(23664)">
- 输入用户名: "'><IMG SRC="/WF_XSRF.html--end_hig--begin_highlight_tag--hlight_tag--">
- 输入用户名: usera'"><iframe src=http://demo.testfire.net--en--begin_highlight_tag--d_highlight_tag-->
- 密码随意输入。</span>
结束语
XSS攻击防御篇的更多相关文章
- MVC WEB安全——XSS攻击防御
XSS(跨站脚本攻击) 描述: 原理:攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入其中Web里面的代码会被执行,从而达到攻击用户的特殊目的. 类别: 1)被动注入(Passive Inj ...
- .Net Core 项目中添加统一的XSS攻击防御过滤器
一.前言 最近公司内部在对系统的安全进行培训,刚好目前手里的一个.net core 项目中需要增加预防xss的攻击,本文将大概介绍下何为XSS攻击以及在项目中如何统一的预防XSS攻击. 二.XSS简介 ...
- .net core xss攻击防御
XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意 ...
- 前端XSS攻击和防御
xss跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会 ...
- Jsoup代码解读之六-防御XSS攻击
Jsoup代码解读之八-防御XSS攻击 防御XSS攻击的一般原理 cleaner是Jsoup的重要功能之一,我们常用它来进行富文本输入中的XSS防御. 我们知道,XSS攻击的一般方式是,通过在页面输入 ...
- XSS 攻击实验 & 防御方案
XSS 攻击&防御实验 不要觉得你的网站很安全,实际上每个网站或多或少都存在漏洞,其中xss/csrf是最常见的漏洞,也是最容易被开发者忽略的漏洞,一不小心就要被黑 下面以一个用户列表页面来演 ...
- 关于Web安全的那些事(XSS攻击)
概述 XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列表,然后向联系人发 ...
- web 安全问题(二):XSS攻击
上文说完了CSRF攻击,本文继续研究它的兄弟XSS攻击. 什么是XSS攻击 XSS攻击的原理 XSS攻击的方法 XSS攻击防御的手段 什么是XSS攻击 XSS攻击全名(Cross-Site-Scrip ...
- 155.XSS攻击原理
XSS攻击: XSS(Cross Site Script)攻击叫做跨站脚本攻击,他的原理是用户使用具有XSS漏洞的网站的时候,向这个网站提交一些恶意代码,当用户在访问这个网站的某个页面的时候,这个恶意 ...
随机推荐
- 东芝线阵CCD芯片TCD1305DG驱动时序设计
最近在做微型光谱仪,用到了东芝的CCD芯片TCD1305DG,该芯片是单行3648像素,输出信号是时间上离散的模拟信号,典型输出速率为0.5M,即每2000ns输出一个像素值(模拟信号),芯片内部集成 ...
- STM32F103 ucLinux开发BOOT
STM32F103 ucLinux开发BOOT STM3210E-EVAL官方开发板主芯片STM32F103ZET6: 片内512K Flash,地址0x0800 0000 ~ 0x0807 FFFF ...
- 【Unix 网络编程】TCP 客户/服务器简单 Socket 程序
建立一个 TCP 连接时会发生下述情形: 1. 服务器必须准备好接受外来的连接.这通常通过调用 socket.bind 和 listen 这三个函数来完成,我们称之为被动打开. 2. 客户通过调用 c ...
- Flask租房项目总结
该Flask项目历时3天,开发小组6人,目的是开发一个租房web项目,该项目采用前后端分离模式. Flask租房项目总结 分析需求文档,需要完成的功能模块有: 登陆注册 首页展示,首页搜索 详情展示, ...
- 1025 反转链表(链表,reverse)
题目: 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4:如果 K 为 4,则 ...
- delphi黑色背景模式
uses Vcl.Styles, vcl.Themes; procedure TForm1.FormCreate(Sender: TObject); begin TStyleManager.LoadF ...
- C++快速开发样本工程的建立--简介
背景 在开发项目过程中,一些功能库能反复被写被用,可以写成库被重用: 但是行业业务也随着换项目,每次重新写一次,如果把一些功能业务和框架绑定,配置绑定,只需要添加,修改,增加业务功能,就可以搭建C++ ...
- sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取
原文:sqlserver 抓取所有执行语句 SQL语句分析 死锁 抓取 在多人开发中最头疼的是人少事多没有时间进行codereview,本来功能都没时间写,哪有时间来开会细细来分析代码.软件能跑就行, ...
- 【python3】将视频转换为代码视频
一.环境准备 1.需要安装opencv,直接安装 pip install opencv-python 2.需要安装ffmpeg ,直接解压免安装,下载传送门: 将 ffmpeg.exe 的路径复制,替 ...
- python基础学习1-日志信息
#!/usr/bin/env python # -*- coding:utf-8 -*- 日志 import logging # 5个级别的日志 DEBUG INFO WARNING ERROR ...