如何在Play Framework 2(Java)中有选择地禁用CSRF检查

duy*_*duy 5 java security facebook playframework playframework-2.0

在Play Framework中,我们可以应用全局CSRF检查

@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public <T extends EssentialFilter> Class<T>[] filters() {
    Class[] filters = { CSRFFilter.class };

    return filters;
}
Run Code Online (Sandbox Code Playgroud)

在大多数情况下都没问题.但我想设置指向我们网站的Facebook Canvas页面.事情是Facebook发送POST请求到我们的网站,它被CSRF检查阻止.它总是返回"无效的CSRF令牌"

因此,我想在某些操作中有选择地禁用CSRF检查,例如www.ourwebsite.com/canvas

这可行吗?

Dom*_*orn 6

我创建了一篇关于如何做到这一点的博客文章,请看这里:

http://dominikdorn.com/2014/07/playframework-2-3-global-csrf-protection-disable-csrf-selectively/

2017年更新:从PlayFramework 2.6开始,现在包含在框架内:https://www.playframework.com/documentation/2.6.x/JavaCsrf#applying-a-global-csrf-filter