Jfinal 如何解决缺少Content-Security-Policy”头、X-Content-Type-Options”头等问题

最近用jfinal做了一个测评项目。。结束后用AppScan等软件扫描了一遍,,,会汇总一些问题,,大部分是缺少“X-Content-Type-Options”头等影响安全:QQ截图20180526215440.png然后看网上有人说需要在web.xml中加过滤器:

2.png

结果试了也responseheader中还是缺少那些头

想问一下对于这些安全性问题Jfinal该如何处理??

有没有相关类似的经验,,求分享~~谢谢

评论区

JFinal

2018-05-26 22:57

如果你只需要对 action 请求设置这几个 head 值,可以用一个全局拦截器,用类似下面的代码添加:
inv.getController().getResponse().setHeader("Content-Security-Policy", 配置的值);

如果你希望对所有资源,包括对静态 js 以及图片资源来设置的话,用一个 Handler 解决一下:
response.setHeader("Content-Security-Policy", 配置的值);

如果你的生产环境用了 nginx 反向代理了静态资源,并且希望对这些资源进行配置的话,需要类似这样的 nginx 配置:
add_header Content-Security-Policy "default-src 'self';";

当然, nginx 上的配置已经与 jfinal 完全无关了。这个问题在本质上也是与 web 框架无关的

坩埚

2018-05-28 16:12

@JFinal 我新建了一个CSPHandler类,在这个类里面添加一个"Content-Security-Policy"头:public class CSPHandler extends Handler {

@Override
public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {
// TODO Auto-generated method stub
response.setHeader("Content-Security-Policy","img-src 'self'");
next.handle(target, request, response, isHandled);
}

}
然后在configHandler中添加:
public void configHandler(Handlers me) {
me.add(new CSPHandler());
}

这样就完成了一个header的添加吗??扫描出的其他头缺少的问题也可以这样处理吗??

JFinal

2018-05-28 16:14

@坩埚 缺啥 header 就添加啥 header,此外你要注意 setHeader 与 addHeader 的区别,如果你某一个 header 是一次性添加的,使用 setHeader 即可,否则使用 addHeader

坩埚

2018-05-28 16:14

@JFinal 我用的tomcat,,,也不用在框架上设置,都只需要通过设置Handler解决是吗?

JFinal

2018-05-28 16:14

@坩埚 注意,你只需要在 response.setHeader("Content-Security-Policy","img-src 'self'"); 后面继续添加 response.setHeader(...) ,并不需要再创建新的 Handler

坩埚

2018-05-28 17:17

@JFinal 好的,,非常感谢感谢~

cfy

2019-01-15 17:12

@JFinal 大神 springcloud 项目要在web怎么改呢