直接链接到第三方图像会打开跨站请求伪造(CSRF)吗?

时间:2018-08-05 03:39:20

标签: laravel security xss csrf

我正在使用嵌入API来获取用户提交的图像URL,以将其托管在我的网站上。

In the documentation of the embed service I am using it states:

  

还有其他安全考虑,并且这也适用于常规嵌入:链接到第三方图像直接打开跨站请求伪造(CSRF)和其他漏洞,建议托管所有图像(包括收藏夹图标)通过您自己的域。该域名可以称为例如safe.yourdomain.com,并且应将其设置为NGINX的反向代理来托管图像。我们将为此提供一个示例NGINX配置。

After looking at another thread here I've become more confused if this is a situation that is only to be worried about if you are storing an html tag in the DB, or if it's for both storing html img tags and or the image URL.

我还想知道Laravel是否可以使用csrf令牌,使用{{}} htmlentity的刀刃自动防御这种情况,以及在将图像链接存储在数据库中时是否可以做些什么。

注意:在以后的某个时候,我会将图像存储在自己的文件结构中,但是现在我不会了。

1 个答案:

答案 0 :(得分:1)

只要正确配置了Laravel应用并遵循建议的使用Laravel提供的CSRF保护的做法,就可以认为您的应用是安全的。

但是,嵌入服务提供商指出的是,如果您呈现的数据包含域中的资源直接,则会使您的用户面临CSRF的潜在风险,这与您自己的应用程序或其他网站。

CSRF Diagram

最好始终验证所有URL,以确保它们是受信任的资源来源,并且永远不要以浏览器可能会自动尝试加载而无需用户确认的方式呈现这些链接。

考虑到广泛的主题和少数可能的策略,有关如何清理,验证和处理不受信任的数据的实施技术可能超出了此答案的目的。

但是对于您的特定问题,如果这些链接是图片,则可以

    1. 确保域受信任
    1. 将它们以背景方式下载到您自己的托管服务器中
    1. 验证下载的内容,以确保其中没有恶意内容
    1. 将资源嵌入到您的域本地(以符合同源策略)。