安全相关
跨站伪造请求攻击防护(CSRF)
Macula 框架由于采用了 Spring Security 作为安全框架,所以直接采用了 Spring Security 提供的 CsrfFilter,默认开启 CSRF 保护。
Macula 框架默认不对 AJAX 请求(请求头 X-Requested-With 值为 XMLHttpRequest)进行 CSRF Token 验证。
如果不是 AJAX 提交,则需要自己在表单中加入下面的代码:
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
如果需要禁用 CSRF,需要修改 WebSecurityConfig
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable();
}
}
具体可以参考 Spring Security Reference
跨站脚本攻击防护(XSS)
配置 macula.config.enableEscapeXss 为 true 开启 XSS 防护,默认开启。
配置 macula.config.escapeXssLevel 设置 XSS 防护级别,默认 BASIC。可选项有 BASIC(基础),BASICWITHIMAGES(基础+图片),SIMPLETEXT(简单文本)和RELAXED。
同时 Spring Security 默认设置响应头 X-XSS-Protection: 1; mode=block 启用浏览器端 XSS 防护。
具体可以参考 Spring Security XSS Protection
图形验证码
获取验证码
页面可以通过访问 /public/getKaptchaImage 获取验证码的图片
验证验证码
验证验证码功能在 KaptchaAuthenticationFilter 中实现,默认已配置在 WebSecurityConfig。默认验证路径为 POST /login,默认验证码值参数名为 kaptcha。