我需要在这个文件中添加一个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 });
}
}
}我想知道关于这件事的任何指示
发布于 2021-03-04 10:51:15
在响应中,可以调用res.setHeader(headerName, headerValue)来设置任何标头,包括HSTS报头。通常,您会希望执行如下操作:
res.setHeader('Strict-Transport-Security', 'max-age=3600; includeSubDomains');这将使HSTS持续1小时--这对于第一次测试来说是一个很好的值,但是一旦您确认所有的测试都正常运行,您可能应该将其增加到31536000 (1年)左右。
您需要将其放在res.status()...行之前的某个位置,以设置此标头。
这为整个站点和其他子域启用了HSTS,但仅在客户端请求此特定端点时才启用。在大多数情况下,假设您有许多其他端点,您希望在所有响应中发送HSTS响应头。为此,您可以使用快递中间件添加这些标头。您可以自己编写,也可以使用头盔 (例如,app.use(helmet.hsts())),它可以为您在全球范围内执行许多其他良好的安全实践&非常简单。
https://stackoverflow.com/questions/66473423
复制相似问题