登录 注册
安全与隐私工具 helmethttp-headersjavascriptmiddlewaresecurity
10,749
Stars
412
Forks
96
Watchers
4
Open Issues
MIT
许可证
TypeScript
语言
2012-02-01
创建时间
2026-11-01
最近更新

项目能做什么

通过设置各种 HTTP 请求头来增强 Express 应用安全性的中间件。
来源:AI 基于仓库事实生成 · 内容以仓库实际 README 为准

使用说明 查看原始 README 原仓库文档

中文使用说明暂未生成。下面保留原仓库 README 摘录,命令与配置均以原文为准。
原始 README 摘录(英文原文,节选前 3000 字符)
# Helmet

Helmet helps secure Node/Express apps. It sets HTTP response headers such as `Content-Security-Policy` and `Strict-Transport-Security`. It aims to be quick to integrate and be low maintenance afterward.

## Quick start

```javascript
import helmet from "helmet";

const app = express();

app.use(helmet());
```

This will set 13 HTTP response headers in your app.

See [the docs](https://helmet.js.org/) for more info, including [the FAQ](https://helmet.js.org/faq/).

## Configuration

Each header can be disabled. To disable a header:

```js
// Disable the Content-Security-Policy and X-Download-Options headers
app.use(
  helmet({
    contentSecurityPolicy: false,
    xDownloadOptions: false,
  }),
);
```

To configure a header, pass header-specific options:

```js
// Configure the Content-Security-Policy header.
app.use(
  helmet({
    contentSecurityPolicy: {
      directives: {
        "script-src": ["'self'", "example.com"],
      },
    },
  }),
);
```

## HTTP header reference

<details id="content-security-policy">
<summary><code>Content-Security-Policy</code></summary>

Default (formatted for readability):

```
Content-Security-Policy:
  default-src 'self'
  base-uri 'self'
  font-src 'self' https: data:
  form-action 'self'
  frame-ancestors 'self'
  img-src 'self' data:
  object-src 'none'
  script-src 'self'
  script-src-attr 'none'
  style-src 'self' https: 'unsafe-inline'
  upgrade-insecure-requests
```

The `Content-Security-Policy` header mitigates a large number of attacks, such as [cross-site scripting][XSS]. See [MDN's introductory article on Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP).

This header is powerful but likely requires some configuration for your specific app.

To configure this header, pass an object with a nested `directives` object. Each key is a directive name in camel case (such as `defaultSrc`) or kebab case (such as `default-src`). Each value is an array (or other iterable) of strings or functions for that directive. If a function appears in the array, it will be called with the request and response objects.

```javascript
// Sets all of the defaults, but overrides `script-src`
// and disables the default `style-src`.
app.use(
  helmet({
    contentSecurityPolicy: {
      directives: {
        "script-src": ["'self'", "example.com"],
        "style-src": null,
      },
    },
  }),
);
```

```js
// Sets the `script-src` directive to
// "'self' 'nonce-e33cc...'"
// (or similar)
app.use((req, res, next) => {
  res.locals.cspNonce = crypto.randomBytes(32).toString("hex");
  next();
});
app.use(
  helmet({
    contentSecurityPolicy: {
      directives: {
        scriptSrc: ["'self'", (req, res) => `'nonce-${res.locals.cspNonce}'`],
      },
    },
  }),
);
```

These directives are merged into a default policy, which you can disable by setting `useDefaults` to `false`.

```javascript
// Sets "Content-Security-Policy: default-src 'self';
// script-src 'self' example.com;obje
阅读完整原文

商业机会分析 AI 生成

CSP 策略可视化调优与 Report-Only 监控 SaaS

产品构想针对 README 中指出的 Content-Security-Policy 需要按应用定制配置及支持 Report-Only 模式的特点,提供免自建后端的违规报告接收端点(Reporting Endpoint),自动聚合线上触发的违规资源请求,并反向生成可直接粘贴使用的 Helmet contentSecurityPolicy 配置代码。
核心功能CSP Report-Only 报告高并发接收接口、违规来源去重与聚类看板、Helmet directives(camelCase/kebab-case)配置代码一键导出、异常突发告警。
目标用户需要启用严格 CSP 防护但担心误杀线上第三方脚本或样式的 Node.js/Express 开发团队(推测)。
难度/周期中等 · 1-2个月完成 MVP · 成本:低(主要为轻量云主机、日志存储与域名成本,推测)
收费模式按月订阅制,提供基础免费额度,按月度报告事件量或接入站点数量阶梯收费(推测)。
竞争风险部分开发者可能直接关闭 CSP(通过 contentSecurityPolicy: false)或使用自有日志系统接收报告,导致付费意愿不足;主流错误监控平台已提供部分 CSP 上报功能,存在同质化竞争(推测)。
依据 尚需验证的假设

面向 Express/Helmet 的 CI/CD 安全头配置审计工具

产品构想开发专用于代码仓库与预发环境的自动化审查工具(如 GitHub App / CLI),针对 Helmet 管理的 13 个响应头及 README 中警示的危险配置(如使用 dangerouslyDisableDefaultSrc、保留 unsafe-inline 或直接禁用关键头)进行静态代码检查与运行时响应头核验。
核心功能AST 静态扫描识别 Helmet 弱配置与缺失项、PR 自动评论修复建议(如动态 nonce 改造示例)、部署后 HTTP 响应头实测评分与合规基线报告。
目标用户注重 DevSecOps 流水线规范、需要自动化安全门禁的中小型软件团队(推测)。
难度/周期中低 · 3-6周完成 MVP · 成本:极低(无状态扫描或轻量 Serverless 架构即可运行,推测)
收费模式Marketplace 订阅制,开源/个人仓库免费,企业私有仓库按席位或仓库数量按月收费(推测)。
竞争风险免费在线 HTTP Header 检测站及综合型代码安全扫描器已覆盖基础检查,单一针对 HTTP 安全头的工具可能难以支撑独立订阅客单价(推测)。
依据 AI推测

Express 安全基线审计与企业合规配置服务

产品构想结合该项目在 Node.js 生态的高普及度(10748 Star)及 MIT 协议自由度,为缺乏专职安全工程师的企业提供标准化的 HTTP 安全头落地改造与合规顾问服务,解决如动态 script-src nonce 改造、老旧前端依赖兼容 CSP 等工程化难题。
核心功能现网 HTTP 安全头深度评估、Helmet 定制化安全策略与 Nonce 中间件代码交付、跨团队联调支持与安全整改证明文档。
目标用户面临第三方安全渗透测试或行业合规审计压力的中小企业研发团队(推测)。
难度/周期低 · 1-2周即可启动服务交付 · 成本:极低(主要投入个人时间成本与基础案例展示页,推测)
收费模式按项目一次性收取改造与审计费用,或作为年度 Node.js 安全顾问服务打包收费(推测)。
竞争风险由于 Helmet 本身极度稳定(2012 年创建至今仅 4 个开放 Issue)且定位低维护,单纯针对 Helmet 的咨询需求体量有限,往往需要扩展至整个 Express/Web 应用安全栈才能成单;且服务模式难以规模化(推测)。
依据 数据支持的判断
AI 基于仓库公开数据分析生成,含推测成分,不构成收益承诺。
报告会保存到 个人中心

竞品与相似项目 GitHub Search 真实检索

项目中文简介Stars语言
nfl/react-helmet 中文介绍暂未生成
A document head manager for React
17,436 JavaScript
PeterH0323/Smart_Construction 中文介绍暂未生成
Base on YOLOv5 Head Person Helmet Detection on Construction
2,640 Python
staylor/react-helmet-async 中文介绍暂未生成
Thread-safe Helmet for React 16+ and friends
2,299 TypeScript
leebenson/reactql 中文介绍暂未生成
Universal React+GraphQL starter kit: React 16, Apollo 2, Mob
1,810 TypeScript
njvisionpower/Safety-Helmet-Wearing-Dataset 中文介绍暂未生成
Safety helmet wearing detect dataset, with pretrained model
1,736 Python
javieraviles/node-typescript-koa-rest 中文介绍暂未生成
REST API boilerplate using NodeJS and KOA2, typescript. Logg
1,013 TypeScript
以上为通过 GitHub 官方 Search API 检索的相似项目,功能差异与优劣势需进一步人工确认,配置 AI 后可生成对比分析。

项目优势与风险

技术成熟度创建于 2012-02-01,近 30 天仍在推送
社区活跃Star 10,749 / Fork 412 / Issue 4(数据支持,可自行核实)
许可证MIT
主要风险上游项目方向可能变化;同赛道竞争者较多(见竞品表);热度与需求不完全等价

安装与使用

快速开始(以仓库 README 为准)
git clone https://github.com/helmetjs/helmet.git
cd helmet
# 请阅读仓库 README 获取确切安装步骤(依赖、配置、启动命令)
阅读原仓库文档
术语说明:Docker=应用容器(把程序和依赖打包运行);API Key=调用外部服务的密钥;Git Clone=把仓库代码下载到本地。常见错误:API Key 未配置 / 端口占用 / 数据库连接失败,多数项目在 README 的 Troubleshooting 章节有说明。