Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

egg-security中通过中间件设置一些安全头对egg-static不起作用,看起来是egg-static的中间件先执行直接响应了body, 导致 egg-security的中间件没机会执行,这个顺序有办法调整么? #85

Open
WormGirl opened this issue Jun 9, 2023 · 10 comments
Labels

Comments

@WormGirl
Copy link

WormGirl commented Jun 9, 2023

No description provided.

@WormGirl WormGirl closed this as completed Jun 9, 2023
@fengmk2
Copy link
Member

fengmk2 commented Jun 9, 2023

对,static 中间件比 security 要早加载,可能是一个问题。

@fengmk2 fengmk2 reopened this Jun 9, 2023
@WormGirl
Copy link
Author

WormGirl commented Jun 9, 2023

对,static 中间件比 security 要早加载,可能是一个问题。

这个考虑后续版本调整这个顺序么

@atian25
Copy link
Member

atian25 commented Jun 9, 2023

是需要对 html 还是 js 附加的安全头? 前者的话,不推荐用 egg-static 托管 html,应该用 egg-view,通过 controller 去渲染一个 html, 这样就会经过 security 了。

@WormGirl
Copy link
Author

WormGirl commented Jun 9, 2023

是需要对 html 还是 js 附加的安全头? 前者的话,不推荐用 egg-static 托管 html,应该用 egg-view,通过 controller 去渲染一个 html, 这样就会经过 security 了。

html用了egg-view没有问题 主要是js和css这些静态资源 内部有一些安全扫描会扫到js文件那些请求缺失一些安全策略的头,项目原因无法使用cdn

@fengmk2 fengmk2 added the bug label Jun 9, 2023
@atian25
Copy link
Member

atian25 commented Jun 20, 2023

可以 PR 改下 https://github.com/eggjs/egg-static/blob/master/app.js

可能得加个配置开关, cc @fengmk2 怎么看?

@fengmk2
Copy link
Member

fengmk2 commented Jun 20, 2023

可以 PR 改下 https://github.com/eggjs/egg-static/blob/master/app.js

可能得加个配置开关, cc @fengmk2 怎么看?

可以加个开关,改默认顺序我担心有 breaking change

@WormGirl
Copy link
Author

这个问题怎么说 现在egg-staic下的页面请求不过egg-security,这些请求都有csrf的风险

@WormGirl
Copy link
Author

大概什么时候能处理 现在安全问题抓的紧 有啥临时方案调整这两中间件顺序么

@WormGirl
Copy link
Author

这样写是可以调整顺序的

 configDidLoad() {
    const { app } = this;
    const index0 = app.config.coreMiddleware.indexOf('bodyParser');
    const index1 = app.config.coreMiddleware.indexOf('securities');
    const arr = app.config.coreMiddleware.slice(index0 + 1, index1 + 1);
    app.config.coreMiddleware.splice(index0 + 1, arr.length);
    const index2 = app.config.coreMiddleware.indexOf('static');
    app.config.coreMiddleware.splice(index2, 0, ...arr);
  }

@svenjia
Copy link

svenjia commented Jan 24, 2024

我也遇到了这个问题。
用egg-static渲染的页面,这时候cookie中还没有crsfToken,直接提交post请求时,就会提示‘nodejs.ForbiddenError: invalid csrf token’。
我是通过:页面加载完成后,先发送一个get请求。这样能解决这个问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants