【问题标题】:Why is X-Powered-By Header not disabled after using helmet?为什么使用头盔后 X-Powered-By Header 未禁用?
【发布时间】:2021-09-27 23:49:56
【问题描述】:

我已经在我的 Express 应用上安装了 Helmet,并使用

将它集成到了我的 app.js 中
app.use(helmet());
const helmet = require('helmet');

当我重新启动我的应用程序时,X-Powered-by 标头仍然没有被禁用。 app.use(helmet.hidePoweredBy()); 也不起作用。 在控制台中查看我的npm list 时,我看到出现了helmet@4.6.0。 我的目标是也使用头盔的其他功能,所以简单地做app.disable('x-powered-by'); 是没有选择的..

【问题讨论】:

    标签: javascript node.js express npm node-modules


    【解决方案1】:

    普通的 ExpressJS 也应该这样做。

    app.disable('x-powered-by')
    

    有用的链接:https://expressjs.com/en/advanced/best-practice-security.html

    【讨论】:

    • 对,但是the docs clearly say Helmet 会这样做(如果您使用hidePoweredBy)。问题似乎是:为什么不是?
    • @T.J.Crowder 是的,我也想知道。而且我可能还想使用头盔的其他功能..
    • 感谢编辑,我想知道您是否正在寻找框架方法。
    【解决方案2】:

    根据the docs,看来需要导入并调用函数:

    const hidePoweredBy = require("hide-powered-by");
    app.use(hidePoweredBy());
    

    This test 向我们展示了过去也有一个配置选项,但它已被弃用。)

    但那些文档也说:

    注意:如果您使用 Express,则不需要此中间件,只需这样做:

    app.disable("x-powered-by");

    【讨论】:

    • 如果我需要并使用 hidePoweredBy(),就像你建议我的应用程序崩溃说 Error: Cannot find module 'hide-powered-by'
    • @codingbudgie - 这只是意味着你没有安装模块。但再说一遍:基本上没有理由这样做。只需使用 Express 文档中的字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 2013-12-28
    • 2021-12-06
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多