midway
midway copied to clipboard
bug(@midwayjs/security): 期望对csrf中referer进行请求方法拦截的配置
需求描述
关于这个referer的允许请求方法能不能配置一个控制放行方法的参数, 如:refererMethodIgnores
有些时候需要配置接口只对某个站点域名开放,get,optons请求都不允许
issues #2916 ,版主他请求接口应该是get的请求,所以通过refere没r拦截下来
配置步骤
组件 @midwayjs/security 根据Midway官网配置 config.default.ts
...
security: {
csrf: {
enable: true,
type: 'referer',
refererWhiteList: ['127.0.0.1:3000'],
refererMethodIgnores: ['get', 'optons'], // 不对 get 和 options 方法请求做拦截
},
...
这个感觉和 csrf 关系不大啊,就是普通的 refer 验证?
嗯,普通的 refer 验证
建议单独一个 refer 的配置,不和csrf混用开关了
是的,会有 refer 策略
我的想法是加个refer 策略配置如下:
security: {
referer: {
enable: true,
value: ['127.0.0.1:3000'], // 必传,拦截的地址域
// 没有或不传method默认全部拦截
method: ['get', 'optons'], // 可选,指定拦截的请求方法
},
}
security包里中间件加个 refer.ts 去处理 referer部分,csrf中的type:any/all可去掉了
目前 security 更多的是安全头的配置,后面会加的是 referrer-policy/p3p,你要的 referrer 还不是策略的一种,是请求的一些自定义逻辑,建议加一个全局中间件使用逻辑进行处理。
我先用中间件处理,不过我是希望 security 中可以把 referer 的配置加上允许请求方法拦截自选,安全请求范围其中的 get option 也属于防盗链要求
周一上班团队讨论一下。
referer 我感觉不应该放在安全里面,考虑搞个反爬组件?再把“css字体混淆反爬”功能加上?在 SSR 反爬领域可以用上
referer 防盗链控制,web安全漏洞接口扫描会有提示。
反爬应该需要根据业务逻辑进行定制,css字体混淆这个属于自定义的功能。
csrf.middleware.ts 可以拆开csrf.middleware.ts和referer.middleware.ts
refererPolicy.middleware.ts 可以归类到 referer.middleware.ts
csrf 防跨站请求伪造, referer防恶意请求。
methodNotAllowed.middleware.ts 感觉没必要,都是通过@Methoad声明的,且允许两三个@Methoad。
就算 @All 表示能接受以上所有类型的 HTTP Method,可以在对routerOptions拓展一个属性ignoreMethod来限制
@All('/',{ignoreMethod:['trace', 'track']})
// 405 Method Not Allowed