首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加HSTS报头

添加HSTS报头
EN

Stack Overflow用户
提问于 2021-03-04 10:43:43
回答 1查看 997关注 0票数 2

我需要在这个文件中添加一个HSTS头,但是我不知道该如何做。

代码语言:javascript
复制
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 });
      }
    }
  }

我想知道关于这件事的任何指示

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-04 10:51:15

在响应中,可以调用res.setHeader(headerName, headerValue)来设置任何标头,包括HSTS报头。通常,您会希望执行如下操作:

代码语言:javascript
复制
res.setHeader('Strict-Transport-Security', 'max-age=3600; includeSubDomains');

这将使HSTS持续1小时--这对于第一次测试来说是一个很好的值,但是一旦您确认所有的测试都正常运行,您可能应该将其增加到31536000 (1年)左右。

您需要将其放在res.status()...行之前的某个位置,以设置此标头。

这为整个站点和其他子域启用了HSTS,但仅在客户端请求此特定端点时才启用。在大多数情况下,假设您有许多其他端点,您希望在所有响应中发送HSTS响应头。为此,您可以使用快递中间件添加这些标头。您可以自己编写,也可以使用头盔 (例如,app.use(helmet.hsts())),它可以为您在全球范围内执行许多其他良好的安全实践&非常简单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66473423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档