`
xudongcsharp
  • 浏览: 468969 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在过滤器中判断URL是否被注入

    博客分类:
  • JSP
 
阅读更多
巩固知识:
//获取来源URL:
String fromURL = request.getHeader("Referer"); 

// /ssm/ser.do 
String url = request.getRequestURI();    

// http://localhost:8080/ssm/ser.do  
StringBuffer url_buffer = request.getRequestURL(); 

//常用的request头信息
    out.println("Protocol: " + request.getProtocol());   
    out.println("Scheme: " + request.getScheme());   
    out.println("Server Name: " + request.getServerName() );   
    out.println("Server Port: " + request.getServerPort());   
    out.println("Protocol: " + request.getProtocol());   
    out.println("Server Info: " + getServletConfig().getServletContext().getServerInfo());   
    out.println("Remote Addr: " + request.getRemoteAddr());   
    out.println("Remote Host: " + request.getRemoteHost());   
    out.println("Character Encoding: " + request.getCharacterEncoding());   
    out.println("Content Length: " + request.getContentLength());   
    out.println("Content Type: "+ request.getContentType());   
    out.println("Auth Type: " + request.getAuthType());   
    out.println("HTTP Method: " + request.getMethod());   
    out.println("Path Info: " + request.getPathInfo());   
    out.println("Path Trans: " + request.getPathTranslated());   
    out.println("Query String: " + request.getQueryString());   
    out.println("Remote User: " + request.getRemoteUser());   
    out.println("Session Id: " + request.getRequestedSessionId());   
    out.println("Request URI: " + request.getRequestURI());   
    out.println("Servlet Path: " + request.getServletPath());   
    out.println("Accept: " + request.getHeader("Accept"));   
    out.println("Host: " + request.getHeader("Host"));   
    out.println("Referer : " + request.getHeader("Referer"));   
    out.println("Accept-Language : " + request.getHeader("Accept-Language"));   
    out.println("Accept-Encoding : " + request.getHeader("Accept-Encoding"));   
    out.println("User-Agent : " + request.getHeader("User-Agent"));   
    out.println("Connection : " + request.getHeader("Connection"));   
    out.println("Cookie : " + request.getHeader("Cookie"));   
    out.println("Created : " + session.getCreationTime());   
    out.println("LastAccessed : " + session.getLastAccessedTime());  



***********************************************
web.xml
<filter>
        <filter-name>URLFilter</filter-name>  
        <filter-class>com.shctc.util.URLFilter</filter-class>
        <init-param>
  		<param-name>sqlInj</param-name>
  		<param-value>java|String|and|exec|insert|select|delete|update|*|chr|mid|master|truncate|char|declare|;|-|+|,</param-value>
  	  </init-param>
    </filter>
    <filter-mapping>  
        <filter-name>URLFilter</filter-name>  
        <url-pattern>*.action</url-pattern>
    </filter-mapping>



Filter
public class URLFilter implements Filter{
	
	private static final long serialVersionUID = 12345L;

	Logger log =Logger.getLogger(URLFilter.class);
	private FilterConfig config=null;
	private String sqlInj="";
	
	public void init(FilterConfig config) throws ServletException{
		this.config=config;
		log.debug("FilterConfig:"+config);
		sqlInj=config.getInitParameter("sqlInj");
	}
	
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException{
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse resp = (HttpServletResponse) response;
		String UserIP = request.getRemoteAddr();
		String requestURL = req.getRequestURL()+ req.getQueryString();
		log.debug("******请求用户来源:"+req.getHeader("Referer"));
		log.debug("******请求用户IP地址:"+UserIP);
		log.debug("******请求URL:"+requestURL);
		
		String[] inj_stra=sqlInj.split("\\|"); 
		for (int i=0; i < inj_stra.length; i++){
			if (requestURL.indexOf(inj_stra[i])>=0){  
				log.debug("******返回主页了,因为请求URL中含有敏感字符:"+inj_stra[i]);
				resp.sendRedirect("page/index.action");
			    return;
			}
		}
		
		//如果存在下一个dofilter方法,则调用下一个过滤器的dofilter方法;否则一直停在这
		chain.doFilter(request, response);
	}
	
	public void destroy(){
		config=null;
	}
分享到:
评论

相关推荐

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统

    6. 权限管理系统,他将精确到每个按钮,我们将在过滤器判断权限,你的代码非常简洁,只需要一个数据注解就完成了验证 7. T4模版或代码生成器,有了T4模版,妈妈再也不用当心我写代码了要熬夜了 8. MVC4 用微软自带的...

    交织::cyclone:React库可安全地呈现HTML,过滤器属性,使用匹配器自动换行文本,呈现表情符号字符等

    使用过滤器清除HTML属性。 使用匹配器插入组件。 自动链接URL,IP,电子邮件和主题标签。 渲染表情符号和表情符号字符。 以及更多! &lt; Interweave xss=removed&gt;HTML&lt;/b&gt; and will safely be rendered!" / &gt; &lt; ...

    精通AngularJS part1

    从JavaScript代码中访问过滤器133 过滤器做什么与不做什么134 过滤器与DOM操作135 过滤器中代价高昂的数据变换136 不稳定的过滤器136 48摘要138 第5章创建高级表单139 51AngularJS表单与传统表单的比较139 ...

    WebCruiser漏洞扫描器 v3.5.3.zip

    WebCruiser - Web 漏洞扫描器, 是一款轻量级但非常实用的Web安全扫描工具,能够扫描SQL注入(SQL注入), Cross Site Scripting(跨站), Local File Inclusion(本地文件包含), Remote File Inclusion(远程文件...

    Sosoo 1.0网络爬虫程序.doc

    用户可以把自己过滤器加入FilterChain中。 你可以实现DocumentFilter接口定制自己的功能,系统实现提供了一个LinkLocalizer实现,用于替换相对连接。 FilterChain filters=new FilterChain(); DocumentFilter ...

    《程序天下:JavaScript实例自学手册》光盘源码

    3.9 判断编辑器中是否包含特殊字符 3.10 判断文本中回车的数量 3.11 判断字符串中有多少汉字 3.12 去除字符串的前后空格 3.13 刷新时清空所有文本框 3.14 随意改变大小的文本框 3.15 文本框的自动全选 3.16 文本框...

    程序天下:JavaScript实例自学手册

    3.9 判断编辑器中是否包含特殊字符 3.10 判断文本中回车的数量 3.11 判断字符串中有多少汉字 3.12 去除字符串的前后空格 3.13 刷新时清空所有文本框 3.14 随意改变大小的文本框 3.15 文本框的自动全选 3.16 文本框...

    PHP程序开发范例宝典III

    实例036 在下拉菜单中显示数组中的元素 51 实例037 级联菜单的应用 52 实例038 修改数据时下拉列表的默认值为数据库中原数据信息 54 实例039 可输入字符的下拉菜单 56 实例040 应用下拉列表选择所要联机的...

    java开源包4

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    白帽子讲浏览器安全.钱文祥(带详细书签).pdf

    3.3 响应数据的安全检查——XSS过滤器 52 3.3.1 IE XSS Filter的实现原理 53 3.3.2 Chrome XSSAuditor的工作原理 55 3.4 文档的预处理 56 3.4.1 浏览器对HTML文档的标准化 56 3.4.2 设置兼容模式 57 3.5 处理...

    KODExplorer 芒果云-资源管理器

    - 标签关闭提示:检测是否有未保存文件,文件修改实时修改是否修修改的按钮状态 ####fix bug:(bug解决和程序优化) - 文本文件编辑 文件名含有url编码则出错bug - 右键菜单在最下面时,右键位置重叠导致点击...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    目前市场业务中在产品以及其他项目的认证和检测方面存在诸多不便,用户需要实地考察并频繁与检测单位沟通,填写繁琐的纸质检测报告、当面送递样品,对于检测环节中存在的问题难以及时交互并处理。市场上相应的检测...

    NET公共类库[转发]

    系统设计之公共类库 ?Data Class Name File Function SQL访问基础类 SqlHelper.cs 执行带参数SQL,非带参数SQL,存储过程等语句 ...Function Ajax控件 分页控件 在线编辑器控件 URL重写控件 本类库为转发

    最新mymps4.0i分类信息4.0i商业版

    【改进】 加强参数提交过滤,防止SQL注入,防止挂马,加强字符过滤 【改进】 系统可安装在二级目录,支持php5.3以上版本安装 【改进】 优化程序代码 轻松应对千万数据级别负载 【改进】 商家注册IP限制,修正发布...

    蚂蚁分类信息系统mymps4.0i商业源码破解版

    【改进】 加强参数提交过滤,防止SQL注入,防止挂马,加强字符过滤 【改进】 系统可安装在二级目录,支持php5.3以上版本安装 【改进】 优化程序代码 轻松应对千万数据级别负载 【改进】 商家注册IP限制,修正发布...

    JAVA上百实例源码以及开源项目

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    JAVA上百实例源码以及开源项目源代码

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

Global site tag (gtag.js) - Google Analytics