【问题标题】:Play 2.5.4 - how to implement CSRF filters?玩2.5.4——如何实现CSRF过滤器?
【发布时间】:2016-06-18 21:28:30
【问题描述】:

如何在 Play 2.5.4 中实现 CSRFfilters?播放文档错误(无法编译,无法在play 2.5.4 java api下),此处的示例无法编译(Play 2.5 disable csrf protection for some requests)。

2.5 java API 有一个 CRSFFilter 类,但它不是 EssentialFilter 的子类,因此不能添加到 EssentialFilters 数组中,因为它是错误的类型。

此功能目前是否在 Play 2.5.4 中被破坏,或者文档当前是否具有误导性/错误?

【问题讨论】:

    标签: playframework csrf-protection


    【解决方案1】:

    这段代码对我来说很好用,Play 2.5.4 Java。 创建 app/Filters.java 文件并将其放入

    import javax.inject.*;
    import play.*;
    import play.mvc.EssentialFilter;
    import play.http.HttpFilters;
    import play.mvc.*;
    import play.filters.csrf.CSRFFilter;
    
    public class Filters implements HttpFilters {
    
        private CSRFFilter csrfFilter;
    
        @Inject
        public Filters(
            CSRFFilter csrfFilter) {
            this.csrfFilter = csrfFilter;
        }
    
        @Override
        public EssentialFilter[] filters() {
            return new EssentialFilter[] {
                csrfFilter.asJava()
            };
        }
    }
    

    在 build.sbt 中添加过滤器依赖

    libraryDependencies += filters
    

    并在您的 application.conf 中放置

    play.modules.enabled += "play.filters.csrf.CSRFModule"
       # CSRF config
    play.filters.csrf {
    
      token {
        name = "csrfToken"
        sign = true
      }
    
      cookie {
        name = null
        secure = ${play.http.session.secure}
        httpOnly = false
      }
    
      body.bufferSize = ${play.http.parser.maxMemoryBuffer}
      bypassCorsTrustedOrigins = true
    
      header {
        name = "Csrf-Token"
        protectHeaders {
          Cookie = "*"
          Authorization = "*"
        }
        bypassHeaders {}
      }
    
      method {
        whiteList = ["GET", "HEAD", "OPTIONS"]
        blackList = []
      }
    
      contentType {
        whiteList = []
        blackList = []
      }
    
      errorHandler = null
    }
    

    您可以在这里了解更多关于配置的信息https://www.playframework.com/documentation/2.5.x/resources/confs/filters-helpers/reference.conf

    在您的模板文件中,只需导入帮助程序

    @import helper._
    

    然后像这样在你的表单中使用它

    <form method="POST" action="...">
    @CSRF.formField 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 2021-08-31
      • 2020-05-12
      • 2012-05-09
      • 1970-01-01
      • 2012-08-18
      • 2014-05-06
      相关资源
      最近更新 更多