django - 代理外部图像以符合 SSL 规定

标签 django ssl nginx hotlinking

我有一个 Django 小网站,用户可以在评论中链接到其他网站上的图片。这绝不是核心功能。

我刚刚将整个站点移至 SSL。这在大多数情况下都运行良好,但远程图像显然并不总是可以通过 SSL 获得。只有极少量的域具有有效证书。

那么什么是汇集图片的最佳方式?

  • 在用户发帖时下载它们并将 URL 更改为本地网址?
  • 做一个只代理另一个 URL 的代理?

第二个似乎工作量较少(我觉得只要使用 NGINX 规则就可以实现),但它也会向使用我的代理来谋取不正当利益的人开放网站……我想避免。

这里最好的折衷是什么?

最佳答案

Github 在所有地方迁移到 HTTPS 时遇到了同样的问题,并在他们的博客中详细说明:https://github.com/blog/743-sidejack-prevention-phase-3-ssl-proxied-assets

他们的解决方案是创建一个代理服务器,并将其开源为 https://github.com/atmos/camo为了解决对代理滥用的同样担忧,它使用与应用程序服务器共享的 secret 进行部署。将其集成到 Django 项目中将非常简单,因为您只需要从给定图像 url 的共享 key 生成摘要。

关于django - 代理外部图像以符合 SSL 规定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19933560/

相关文章:

python - Django创建包含Unicode的CSV文件,可以直接用Excel打开

python - 无法使用 Django ORM 关闭脚本中的自动提交

java - SSL 套接字连接 : CFNetwork SSLHandshake failed (-9824) connecting to Java SSLServerSocket

apache - .htaccess-SetEnvIf 到 NGinx-fastcgi_param 转换

python - Heroku : "Please supply the ENGINE value" 中的 Django 错误

javascript - 通过 Ajax 将多个表单数据发布到 Django 中的单个 View

.NET 4.5 HttpClient PUT 或 POST over SSL 总是失败

azure - Windows Azure 云应用程序 - 无法创建 SSL/TLS 安全通道

Nginx 多个实例

java - 在tomcat和nginx子域之间共享一个sessionid