java web安全框架_Java Web:主动和被动方式检测安全的框架

对于某些敏感的系统例如支付、交易需要为其加固,有必要将可能的攻击情况考虑进来加以防范,于是有了这么一个简易的安全框架。在前辈的代码上( 详见 :http://blog.csdn.net/zhongweijian/article/details/8680737)我大幅度重构,更好地理解 Java Web 安全实施措施。

该框架基于 Sevlet 过滤器和若干 HttpServletRequest/HttpServletResponse 覆盖的方式增加一些输入输出的过滤。如下表格显示了可支持的哪些攻击。

作用对应类名加载方式init-param

XSS过滤

com.ajaxjs.web.security.wrapper.XSS_Request/XSS_Response

wrapper

enableXSSFilter

Header CLRF 过滤

com.ajaxjs.web.security.wrapper.CLRF_Response

wrapper

enableCLRF_Filter

Cookies Key 验证和大小验证

com.ajaxjs.web.security.wrapper.CookieRequest/CookieResponse

wrapper

cookieWhiteList(配置白名单)

文件上传后缀验证

com.ajaxjs.web.security.wrapper.UploadRequest

wrapper

uploadfileWhiteList(配置白名单)

CSRF 攻击

com.ajaxjs.web.security.filter.CSRF

filter

encryCookieKey(配置 key)

Session 通过加密存储到 cookie

com.ajaxjs.web.security.filter.EncrySessionInCookie

filter

encryCookieKey(配置 key)

POST 白名单/黑名单机制验证

com.ajaxjs.web.security.filter.Post

filter

postWhiteList/postBlackList(配置白名单/黑名单)

Referer 来路检测

com.ajaxjs.web.security.filter.RefererFilter

filter

RefererFilter(配置 key)

所有检测都由 ConfigLoader 负责读取配置和启动。是否启动某项功能取决于配置有否,只要有配了的话,该功能点就生效,反之则不启用。如表格上的 init-param 对应的是 web.xml 里面配置的内容。

加载方式指的是在 filter 中主动检测,一般是执行 check() 方法,传入 request/response 即可;而 wrapper 是指被动方式检测、过滤,具体说是对 Java API 方式覆盖来包含检测手段,类似于设计模式的 Template 模版方法,使得调用者在不改变 API 的前提下又能加入新的逻辑。特别地可以了解下 HttpServletRequestWrapper/HttpServletResponseWrapper 这两个原生 API。

使用方法:引入 jar 包并添加 web.xml 配置。

SecurityFilter

com.ajaxjs.web.security.ConfigLoader

enableXSSFilter

true

enableCLRF_Filter

true

encryCookieKey

1234567887654321

cookieWhiteList

id,JESSIONID,name,clrf

uploadfileWhiteList

jpg,png,doc,xls

CSRF_Filter

true

postWhiteList

/d/sssecurity, /user/aaa/name*

postBlackList

true

redirectUrlt

http://localhost:8080/[0-9A-Za-z]*,http://www.taobao.com/[0-9A-Za-z]*

SecurityFilter

/*

SecurityFilter

com.ajaxjs.web.security.ConfigLoader

enableXSSFilter

true

enableCLRF_Filter

true

encryCookieKey

1234567887654321

cookieWhiteList

id,JESSIONID,name,clrf

uploadfileWhiteList

jpg,png,doc,xls

CSRF_Filter

true

postWhiteList

/d/sssecurity, /user/aaa/name*

postBlackList

true

redirectUrlt

http://localhost:8080/[0-9A-Za-z]*,http://www.taobao.com/[0-9A-Za-z]*

SecurityFilter

/*

具体防御原理可参见我之前写的博客《 网络信息系统安全检测方案设计(上、下)》。

值得注意的是本方案没有考虑 SQL 注入,这是因为 SQL 注入在 DAO 层面已经完成了。


版权声明:本文为weixin_39867509原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。