架构设计-关于图片动态生成防止攻击的问题?

架构设计-关于图片动态生成防止攻击的问题?

夜无邪 发布于 2017-04-02 字数 370 浏览 1235 回复 2

问题是这样的:我们现在的所有图片都是放在一个服务器上,并且只保存一张源图,当访问的时候根据不同格式(不同的宽度参数)的URL来rewrite到图片裁剪,然后裁剪后放到SQUID缓存中,当下次用一样的URL取图片里会从缓存里取,所以现在的问题是,图片是实时生成的(访问时生成),所以这样就怕有人会攻击,就是用不同的尺寸的URL访问,所以想问有什么好的办法能防止,还有问一下淘宝是怎么做到的?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜柠檬 2017-10-04 2 楼

自己网站用到的图片尺寸一般应该不会很多,先将网站中用到的尺寸预先定义好,生成图片时第一步就是判断传过来的图片是否在预定义当中。

清晨说ぺ晚安 2017-09-08 1 楼

感谢邀请,在我构想中,EvaCloudImage应该只专注于图片的处理,做好一件事情,安全方面需要结合服务器运维和整体项目的综合需求考虑。

所以我认为首先需要明确的是:项目中是否有“任何人都可以调节生成图片”这样的需求。

如果答案为是,那么你的项目可能是更接近于图片托管这样的云服务,此时要考虑的就是如何通过分布式部署来让降低图片生成时的服务器压力,可以参考张宴分享过的利用开源的Gearman框架构建分布式图片处理平台

而安全问题更多需要服务器配置来实现,以下都是可以考虑部署的

对URL访问频率进行限制,拒绝来自同一用户的连续访问
统计缓存图片的访问率,对低访问率的图片定期删除

如果项目中只允许特定权限的人对调节生成图片,比如管理员,那么就简单很多,以EvaCloudImage为例,可以对图片生成功能绑定一个子域名A,对生成以后的图片缓存绑定另一个子域名B,图片在后台提前生成好,最后暴露给用户的是图片缓存域名B即可。