如何使用 HTTP Headers来保护你的 Web网站(下)

接上文 如何使用 HTTP Headers来保护你的 Web网站(上),开发者可以利用 HTTP响应头来加强 Web网站应用程序的安全性,通常只需要添加几行代码即可。本文就是说明网站建设 web开发者如何利用 HTTP Headers 来构建安全的网站应用。

控制 iframe

iframe (正式来说,是 HTML 内联框架元素)是一个 DOM 元素,它允许一个 web 应用嵌套在另一个 web 应用中。这个强大的元素有部分重要的使用场景,比如在 web 应用中嵌入第三方内容,但它也有重大的缺点,例如对 SEO 不友好,对浏览器导航跳转也不友好等等。

如何利用 HTTP Headers

其中一个需要注意的事是它使得点击劫 持变得更加容易。点击劫 持是一种诱使用户点击并非他们想要点击的目标的攻 击。要理解一个简单的劫 持实现,参考以下 HTML,当用户认为他们点击可以获得奖品时,实际上是试图欺骗用户购买其他。

<html>
  <body>
    <button class='some-class'>Win a Prize!</button>
    <iframe class='some-class' style='opacity: 0;’ src='http://buy.com?buy=toaster'></iframe>
  </body>
</html>

有许多恶意应用程序都采用了点击劫 持,例如诱导用户点赞,在线购买商品,甚至提交机密信息。恶意 web 应用程序可以通过在其恶意应用中嵌入合法的 web 应用来利用 iframe 进行点击劫 持。

这可以通过设置 opacity: 0 的 CSS 规则将其隐藏,并将 iframe 的点击目标直接放置在看起来无辜的按钮之上。点击了这个无害按钮的用户会直接点击在嵌入的 web 应用上,并不知道点击后的后果。

阻止这种攻 击的一种有效的方法是限制你的 web 应用被框架化。在 RFC 7034 中引入的 X-Frame-Options,就是设计用来做这件事的。此响应头指示浏览器对你的 web 应用是否可以被嵌入另一个网页进行限制,从而阻止恶意网页欺骗用户调用你的应用程序进行各项操作。

你可以使用 DENY 完全屏蔽,或者使用 ALLOW-FROM 指令将特定域列入白名单,也可以使用 SAMEORIGIN 指令将应用的源地址列入白名单。

我的建议是使用 SAMEORIGIN 指令,因为它允许 iframe 被同域的应用程序所使用,这有时是有用的。以下是响应头的示例:

X-Frame-Options: SAMEORIGIN

以下是在 Node.js 中设置此响应头的示例代码:

function requestHandler(req, res){
res.setHeader('X-Frame-Options','SAMEORIGIN');}

 

转载请注明链接地址:荐爱小站 » 如何使用 HTTP Headers来保护你的 Web网站(下)

赞 (0) 赏 !

觉得文章有用就打赏一下吧,赠人玫瑰手有余香!

支付宝扫一扫打赏

微信扫一扫打赏