filter

如何防止xss攻击

前言 上一篇说到了何为xss攻击,以及xss攻击的分为三类,存储型xss***和***反射型xss,以及***dom型xss***。 由于xss的原理是恶意代码在浏览器执行导致。所以对xss防范的核心理念就是让恶意代码不可执行。其手段有二: 1,过滤输入 2,转义输出 过滤输入(Filtering for XSS) 过滤输入就是输入中的可执行代码标记,比如特殊符号及字样(()<>& script)过滤到,将其去除,或替换成无威胁的字符。 对于基于web的java应用,可以使用filter拦截请求,对请求中的输入参数使用正则匹配特殊,然后进行替换处理 转义输出(

  • vincent chen
2 min read
filter

Filter 和 HandlerInterceptor 以及Spring AOP的异同

相同点 都能将某些横切代码提炼出来,然后通过拦截的方式,添加到被拦截的方法或请求,从而降低代码耦合度和复杂度。 其中Filter和Spring的HandlerInterceptor设计思想相同,都是通过链式的方式。即将一组Filter或者HandlerInterceptor定义好,放在配置文件中,然后通过容器加载,然后顺序调度。Filter的容器是Tomcat,HandlerInterceptor的容器是Spring。 同时Filter和HandlerInterceptor都是针对web请求拦截处理 不同点 Filter更原生,基于Servlet框架即可实现 HandlerInterceptor基于Spring,需要Spring MVC Framework的支持 Spring AOP,基于AspectJ,典型的面向切面编程,他不局限于Web应用,功能更强大,使用也更复杂点。

  • vincent chen
1 min read
servlet

Servlet Filter工作原理

前言 本文主要探讨Filter的链式处理结构,不会过多赘述Filter的基本功能。 Filter的链式结构 一直一来,我对多个filter如何能够实现链式处理的结构很好奇。大体说来,假若Filter A处理完后,可以将request和response交由后续的Filter B处理,这很像责任链模式(Chain of Responsibility Pattern)。但实际上它不是,而是采用类似注册查找的方式。 一个filter的核心方法为dofilter,其核心结构为: public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) { //此处编写该filter的核心处理代码 //... chain.doFilter(request,

  • vincent chen
1 min read