【问题标题】:Prevent "clickjacking" aka "UI redress attack" through AWS security web services通过 AWS 安全 Web 服务防止“点击劫持”又名“UI 补救攻击”
【发布时间】:2020-11-30 08:42:10
【问题描述】:

是否可以通过任何 AWS 安全服务(如 WAF 或 CloudFront)来防止 Clickjacking 或“UI 补救攻击”?

https://www.owasp.org/index.php/Clickjacking

众所周知,某些安全 HTTP 标头可以添加到用户请求中,以指示浏览器执行某些安全措施,如下所示,

  • 严格的传输安全性
  • 内容安全策略
  • X-Content-Type-Options
  • X 框架选项
  • X-XSS-保护
  • 推荐人政策

这些可以在后端代码级别进行配置,但是,我想知道如果不想在应用程序级别设置这些参数,是否可以在 AWS 级别使用他们的任何安全网关服务来完成,例如WAF 还是 CloudFront?

【问题讨论】:

    标签: amazon-web-services amazon-ec2


    【解决方案1】:

    您可以通过添加以下链接中提到的响应头来在服务器级别执行一些操作:

    【讨论】:

      【解决方案2】:

      编辑:这有一个similar answer here

      对于现在出现的那些,您可以使用 Lambda@Edge 添加 HSTS 标头以及其他“frame-buster”标头,例如 x-frame-optionsreferrer-policy

      这很便宜,每百万个请求大约需要 30 美分。

      这个link from the AWS networking and content delivery blog 详细描述了如何做到这一点。

      这里重复整个内容太长了,但本质上它描述了以下流程:

      这是该过程的工作原理:

      1. 查看者导航到网站。
      2. 在 CloudFront 从缓存中提供内容之前,它将触发与该行为的查看器请求触发器关联的任何 Lambda 函数。
      3. CloudFront 提供缓存中的内容(如果可用),否则转到第 4 步。
      4. 仅在 CloudFront 缓存“未命中”之后,才会针对该行为触发源请求触发器。
      5. S3 Origin 返回内容。
      6. 在从 S3 返回内容后但在缓存到 CloudFront 之前,会触发源响应触发器。
      7. 在 CloudFront 中缓存内容后,会触发查看器响应触发器,这是查看器接收内容之前的最后一步。
      8. 查看者接收内容。

      再一次,如果链接到的博客消失了,下面的代码是通过 Lambda 添加安全标头的示例(请记住,这是由 CloudFront 使用 Lambda@Edge 集成运行的):

      'use strict';
      exports.handler = (event, context, callback) => {
          
          //Get contents of response
          const response = event.Records[0].cf.response;
          const headers = response.headers;
      
      //Set new headers 
       headers['strict-transport-security'] = [{key: 'Strict-Transport-Security', value: 'max-age=63072000; includeSubdomains; preload'}]; 
       headers['content-security-policy'] = [{key: 'Content-Security-Policy', value: "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'"}]; 
       headers['x-content-type-options'] = [{key: 'X-Content-Type-Options', value: 'nosniff'}]; 
       headers['x-frame-options'] = [{key: 'X-Frame-Options', value: 'DENY'}]; 
       headers['x-xss-protection'] = [{key: 'X-XSS-Protection', value: '1; mode=block'}]; 
       headers['referrer-policy'] = [{key: 'Referrer-Policy', value: 'same-origin'}]; 
          
          //Return modified response
          callback(null, response);
      };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-03
        • 1970-01-01
        • 2022-07-09
        • 2020-10-03
        • 2016-09-12
        相关资源
        最近更新 更多