typescript - 添加 HSTS 标头
问题描述
我需要在这个文件中添加一个 HSTS 头,但我不确定如何去做。
import { injectable, inject } from 'tsyringe';
import { NextFunction, Request, Response } from 'express';
import * as Types from '../../types';
@injectable()
class EncryptionController {
constructor(@inject('EncryptionService') private service: Types.EncryptionService) { }
public encrypt = async (req: Request, res: Response<Types.EncryptResponsePayload | Types.ServiceError>, next: NextFunction) => {
try {
const { publicKeys, payload } = req.body as Types.EncryptRequest;
const response = await this.service.encrypt(payload, publicKeys);
res.status(200).json(response);
} catch (error) {
if (error.message === 'not found' || error.message === 'Secret not found') {
res.status(404).json({ message: error.message });
} else {
res.status(400).json({ message: error.message });
}
}
}
我会很感激这方面的任何方向
解决方案
在响应中,您可以调用res.setHeader(headerName, headerValue)
设置任何标头,包括 HSTS 标头。通常,您需要执行以下操作:
res.setHeader('Strict-Transport-Security', 'max-age=3600; includeSubDomains');
这将启用 HSTS 1 小时 - 这对于第一次测试来说是一个不错的值,但是一旦您确认一切正常,您可能应该将其增加到 31536000(1 年)之类的值。
你需要把它放在你的res.status()...
行之前的某个地方来设置这个标题。
这将为整个站点和其他子域启用 HSTS,但仅在客户端请求此特定端点时才启用。在大多数情况下,假设您有许多其他端点,您希望在所有响应中发送 HSTS 响应标头。为此,您可以使用 express 中间件添加这些标头。您可以自己编写,也可以使用Helmet(例如app.use(helmet.hsts())
),它可以在全球范围内轻松地为您执行此操作以及许多其他良好的安全实践。
推荐阅读
- nsis - NSIS:从函数调用 MUI_PAGE_LICENSE 但得到“XPStyle 无效”错误
- python - 从父对象自动创建子对象 - Django 1.11
- python - 如何根据 csv 中的列找到前三行?
- php - 如何获取用于另一种 Laravel 方法的 pdf 文档 - PDF
- excel - 我想使用 VBA for Excel 设计一个函数
- php - 如何成功地将 foreach $key=>$var 写入文本文件
- orocommerce - orocommerce 安装失败您请求了一个不存在的参数“web_backend_prefix”
- asp.net-core - ClaimType.GivenName 不返回我的名字
- google-cloud-firestore - 从 Firestore 更新中获取数据
- winforms - iTextSharp 无法正确读取 pdf 中的字段