在一个Restful API中添加'x-frame-options'是否有意义?

26
我们正在开发一个满足各种事件需求的RESTful API。我们进行了一次Nessus漏洞扫描以查看安全漏洞。结果发现我们存在一些导致点击劫持的漏洞,但我们已经找到了解决方案。我已经添加了x-frame-options作为SAMEORIGIN,以处理这些问题。
我的问题是,作为一个API,我是否需要处理点击劫持?我猜第三方用户应该能够通过iframe访问我的API,所以我不需要处理这个问题。
我有什么遗漏吗?请分享您的想法。
3个回答

16

2019-10-07编辑: @Taytay的PR已合并,因此OWASP推荐现在说服务器应该发送X-Frame-Options头。


原回答:

OWASP建议 客户端 发送一个X-Frame-Options头,但没有提到API本身。

我看不出任何情况下API返回点击劫持安全头的意义 - 在iframe中没有任何可以点击的东西!


1
我认为这是一个打字错误,因为X-Frame-Options是一个响应头,而不是客户端头。我已经提交了一个拉取请求到OWASP秘籍库来修复建议。 - Taytay
@nickspoon,这只是一个类似的问题。你能分享一下你的想法吗? - Priya

15

OWASP建议不仅需要发送X-Frame-Options头,而且应将其设置为DENY。

这些建议并不是针对网站,而是针对REST服务的。

适用于此场景的情况正是OP提到的——运行漏洞扫描。

如果未返回正确的X-Frame-Options头,则扫描将失败。这在向客户证明您的端点安全时非常重要。

提供给客户一个通过的报告要比争论缺少头部的问题容易得多。

添加X-Frame-Options头不应影响端点使用者,因为它不是具有iframe的浏览器。


1
链接的文章部分说:“此外,客户端应该发送一个X-Frame-Options: deny”。是客户端。不是服务器。 - nickspoon
4
@nickspoon,我认为OWASP文章中有个错别字,因为X-Frame-Options是一个响应头(response header)。 - Chopin
你说得对。在你的评论之后,我尝试以各种方式联系OWASP(在他们迁移到GitHub之前),但从未收到任何回复。@Taytay现在已成功更新了文章,所以我也更新了我的答案。 - nickspoon
@Stev,这是一个类似的问题。您能否分享一下您的想法? - Priya
2
虽然这是毋庸置疑的明智建议,但它并没有回答OP关于在API响应中提供此标头是否具有“意义”的问题。 它与“X-Powered-By”标头一样毫无意义;客户端不会注意到它。 - Ed Graham

0
除了OWASP的建议和其他答案中提到的原因外,还存在一些合法的攻击可以针对包含敏感信息的可嵌入API响应进行。请参阅:GOTCHA:将网络钓鱼推向一个全新的水平
基本上,这种攻击会操纵敏感信息,以欺骗目标用户向攻击者披露信息。因此,无论是使用X-Frame-Options还是Content-Security-Policy(带有frame-ancestors指令),都应该限制API响应被任意来源嵌入。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接