常用于API网关的是,web api 网关

通过设置适当的 API 网关,继续寻找嗅探、框架和 HTTPS Pinning。

每天‬分享‬最新‬软件‬开发‬,Devops,敏捷‬,测试‬以及‬项目‬管理‬最新‬,最热门‬的‬文章‬,每天‬花‬3分钟‬学习‬何乐而不为‬,希望‬大家‬点赞‬,评论,加‬关注‬,你的‬支持‬是我‬最大‬的‬动力‬。下方抖音有我介绍自动化测试,以及google cloud 相关视频课程,欢迎观看。

API 管理解决方案,也称为API 网关,是 API 时代的必需品。但是,一旦您设置了这样的网关,您就可以将其用于与 API 无关的不同目的。今天,我想向您展示如何提高 Web 应用程序的安全性。

防止嗅探

浏览器是一种奇妙的技术,它试图让用户的生活尽可能舒适。但是,易用性和安全性之间的平衡有时可能会偏向于前者,而不利于后者。例如,如果 HTTP 响应没有设置内容类型,浏览器可能会尝试推断它:

内容嗅探,也称为媒体类型嗅探或 MIME 嗅探,是检查字节流内容以尝试推断其中数据的文件格式的做法。内容嗅探通常用于弥补准确元数据的缺乏,否则需要这些元数据才能正确解释文件。

–内容嗅探

这听起来不错,但这是一个安全风险。想象一个允许上传图片的网站。攻击者可以上传包含恶意 Javascript 的图像。如果在没有发送内容的情况下访问图像,浏览器可以将流解释为脚本 – 从域提供。

为了防止这种灾难性的情况发生,可以设置X-Content-Type-Options响应头:

X-Content-Type-Options: nosniff

例如,我将使用Apache APISIX API Gateway。Apache APISIX 建立在插件架构之上。顾名思义,response-rewrite插件允许修改响应,包括HTTP 响应标头。

您可以通过 HTTP 调用配置 Apache APISIX。这是防止嗅探的命令:

curl -i http://apisix:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d 'br{br “uri”:“/*”,br “插件”:{br “响应重写”:{br “标题”:{br “X-Content-Type-Options”:“nosniff”br }br }br }br} '

Apache APISIX将根据请求匹配路由设置标头。由于路由是一个包罗万象的,浏览器将从无响应中嗅探响应。

防止框架

一些恶意网站可能会将您的网站嵌入HTMLiframe以进行攻击。例如,恶意行为者可能会设计myshop.trustmebro.com嵌入您的合法网店的网站myshop.legit.com。浏览前者的用户会认为他们正在浏览后者。他们将能够浏览产品,将它们放入购物车等,直到付款页面。在此页面上,myshop.trustmebro.com将拦截输入以获取付款详细信息,例如与信用卡相关的所有信息:

点击劫持(归类为用户界面修复攻击或 UI 修复)是一种恶意技术,它诱骗用户点击与用户感知不同的内容,从而可能泄露机密信息或允许其他人在看似点击的同时控制他们的计算机无害的对象,包括网页。

–点击劫持

X-Frame-Options帮助我们防止框架。为完全防止取景,该值应为deny。如果您需要在您的域上设置框架,请sameorigin改用。

让我们response-rewrite再次使用插件:

curl -i http://apisix:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d 'br{br “uri”:“/*”,br “插件”:{br “响应重写”:{br “标题”:{br “X-Frame-Options”:“拒绝”br }br }br }br} '

此时,兼容的浏览器将阻止不良行为者构建您的网站。

HTTPS Pinning

与纯 HTTP 相比,HTTPS 允许安全保证:

安全超文本传输协议 (HTTPS) 是超文本传输​​协议 (HTTP) 的扩展。它用于计算机网络上的安全通信,并在 Internet 上广泛使用。在 HTTPS 中,通信协议使用传输层安全性 (TLS) 或以前的安全套接字层 (SSL) 进行加密。因此,该协议也称为 HTTP over TLS 或 HTTP over SSL。

HTTPS 的主要动机是对访问的网站进行身份验证,以及在传输过程中保护交换数据的隐私和完整性。它可以防止中间人攻击,并且客户端和服务器之间的通信双向加密可以防止通信被窃听和篡改。

— HTTPS

作为网站所有者,您可以通过两种方式提供 HTTPS:

  1. 您只能通过 HTTPS 配置站点。不幸的是,试图通过 HTTP 访问该站点的用户将无法访问。
  2. 您可以 301 将用户从 HTTP 重定向到 HTTPS。但由于 HTTP 不受保护,因此在初始请求期间可能会发生MITM攻击。恶意行为者可以返回伪造的响应,而不是重定向到合法的 HTTPS 站点。

HTTP Strict Transport Security 是对上述困境的回应:

HTTP 严格传输安全 (HSTS)是一种策略机制,有助于保护网站免受协议降级攻击和 COOKIE 劫持等中间人攻击。它允许 Web 服务器声明 Web 浏览器(或其他符合要求的用户代理)应仅使用 HTTPS 连接自动与其交互,该连接提供传输层安全性 (TLS/SSL),这与单独使用不安全的 HTTP 不同。HSTS 是一种 IETF 标准跟踪协议,在 RFC 6797 中指定。

服务器通过名为“”的 HTTP 响应头字段将 HSTS 策略传达给用户代理Strict-Transport-Security。HSTS 策略指定用户代理应该只以安全方式访问服务器的时间段。使用 HSTS 的网站通常不接受明文 HTTP,要么拒绝通过 HTTP 的连接,要么系统地将用户重定向到 HTTPS(尽管这不是规范要求的)。这样做的结果是无法执行 TLS 的用户代理将无法连接到该站点。

该保护仅在用户至少访问该网站一次后才适用,这依赖于首次使用的信任原则。此保护的工作方式是用户输入或选择指向指定 HTTP 的站点的 URL,将自动升级到 HTTPS,而无需发出 HTTP 请求,从而防止发生 HTTP 中间人攻击。

— HTTP 严格传输安全

HSTS的最大缺点是它只有在用户至少访问过一次该站点后才能工作。除此之外,它解决了上述问题。

此时,您已经习惯了response-rewrite插件:

curl -i http://apisix:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d 'br{br “uri”:“/*”,br “插件”:{br “响应重写”:{br “标题”:{br “严格传输安全”:“dmax-age=86400;includeSubDomains”br }br }br }br} '

细粒度的内容控制

攻击者可以通过多种方式从您的域中加载恶意资源。如果他们可以访问底层网站,他们可以添加一个 “ 标签并引用他们想要的任何内容。动态呈现内容的CMS,例如WordPress,是不良行为者最喜欢的目标。

另一方面,您可能希望自己加载其他资源。此类资源包括样式表、字体、脚本等;相同的域或任何其他域都可以托管它们。因此,需要对哪些资源允许哪些不允许进行细粒度控制。这是Content Security PolicyHTTP 标头的目标。

内容安全策略 (CSP)是一种计算机安全标准,用于防止在受信任的网页上下文中执行恶意内容导致的跨站点脚本 (XSS)、点击劫持和其他代码注入攻击。

–内容安全政策

这是一个示例CSP:

Content-Security-Policy: default-src 'none'; script-src 'self'; connect-src 'self'; img-src 'self'; style-src 'self'; frame-ancestors 'self'; form-action 'self';

该策略允许来自同一来源的图像、脚本、表单提交和 CSS 。但是,它不允许加载任何其他资源。

让我们暂停一下。精明的读者可能已经意识到前面几节中 HTTP 标头的配置是通用的。任何标准的 Web 服务器,例如 Apache HTTP 服务器或反向代理,例如Nginx,都可以快速实现相同的功能。

然而,CSP 是另一种野兽。没有通用配置;您必须根据基础站点设置标题。虽然遗留服务器/反向代理允许细粒度配置,但它们通常有两个缺点:

  • 停机时间:您必须重新启动服务器才能使新配置生效。
  • 没有原生的持续部署集成:您必须同时部署新版本的站点和配置。它需要传统解决方案通常缺乏的“管理”API。

Apache APISIX 提供热重载功能和管理 HTTP 端点。

现在,到配置:

curl -i http://apisix:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d 'br{br “uri”:“/*”,br “插件”:{br “响应重写”:{br “标题”:{br “Content-Security-Policy”:“default-src 'none'; script-src 'self'; connect-src 'self'; img-src 'self'; style-src 'self'; frame-ancestors 'self' ; 形式-动作‘自我’;”br }br }br }br} '

结论

正确的 HTTP 响应标头可以大大提高您的 Web 应用程序的安全性。大多数标头都是通用的:Web 服务器和反向代理可以轻松配置它们。

但是,当标头值取决于底层 Web 应用程序时,我们需要在不停机的情况下重新加载配置,并且需要一种将其与我们的持续部署管道集成的方法。API 网关,例如Apache APISIX,非常适合这种用法。

使用 API 网关保护您的 Web 应用程序

原创文章,作者:芒小种,如若转载,请注明出处:http://www.fhgg.net/shenghuobaike/12390.html

本文来自投稿,不代表【食趣网】立场,如若转载,请注明出处:http://www.fhgg.net/

(0)
上一篇 2023年1月20日 下午1:21
下一篇 2023年1月20日 下午1:27

相关推荐

发表回复

登录后才能评论