Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 如何限制ImageResizer应用程序创建的图像文件数?_Security_Imageresizer - Fatal编程技术网

Security 如何限制ImageResizer应用程序创建的图像文件数?

Security 如何限制ImageResizer应用程序创建的图像文件数?,security,imageresizer,Security,Imageresizer,我们即将开始使用ImageResizer()并使用DiskCache插件。我们担心创建数以百万计的文件会非常容易,并导致存储问题 我找不到所有配置选项的最新详细说明,有些选项看起来可能是我们想要更改的默认设置(尽管有警告)(即subfolders=“32”targetItemsPerFolder=“400”maximumItemsPerFolder=“1000”),但我无法说明它们是如何协同工作的。这里提到了一些与“子文件夹”相关的配置:但我不确定其用法或其他未提及的设置 有没有办法限制创建的文

我们即将开始使用ImageResizer()并使用DiskCache插件。我们担心创建数以百万计的文件会非常容易,并导致存储问题

我找不到所有配置选项的最新详细说明,有些选项看起来可能是我们想要更改的默认设置(尽管有警告)(即subfolders=“32”targetItemsPerFolder=“400”maximumItemsPerFolder=“1000”),但我无法说明它们是如何协同工作的。这里提到了一些与“子文件夹”相关的配置:但我不确定其用法或其他未提及的设置

有没有办法限制创建的文件数量?当达到这个极限时会发生什么?我正在考虑一个脚本场景,其中有人使用不同的指令请求所有文件,从而创建数百万个文件……那么,当重复达到此限制时会发生什么情况?

subfolders x targetItemsPerFolder=soft limit 32 x 400=12800

子文件夹x maximumItemsPerFolder=硬限制 32 x 1000=32000

除非所有缓存文件都被“积极使用”,否则将强制执行软限制。 硬限制在任何情况下都会强制执行。如果要增加缓存的大小,请增加
子文件夹
,而不是其他值;它们已经针对NTFS文件系统上的最佳性能进行了调整

设置
autoClean=false
以禁用后台缓存清理

即使禁用了自动清理功能,用压缩图像填充存储空间也是运行(D)DOS攻击的一种极为低效的方式。它还可以通过多种方式非常容易地进行缓解,只需使用像CloudFront这样的CDN,或者将其放在自己的应用程序池中并启用节流。ImageResizer不需要在应用程序的进程中运行;如果您使用的是URL API,那么它总是可以外部化的。

如果你的网站是每天都有针对性的(D)DoS攻击,你可以考虑用哈希- IE来签署所有的图像URL,如果URL没有出现在HTML中,它就不被服务了。EncryptedPlugin(beta版,未记录,但已包含在下载中)可以为您执行此操作,但除非您确实看到有针对性的攻击,不要。那将是痛苦而没有收获

知道有很多缓解方案可用。如果网站被认为是高风险的有针对性的攻击,请为修改图像URL留出一条道路(通过帮助者方法或其他方式)。这将确保您可以利用本文中提到的任何缓解方案。


但是,解决一般问题的更好方法是购买防火墙或使用具有良好IP的托管公司。

太好了,感谢您对硬/软限制的澄清以及有关DOS攻击的额外信息。我们可能会使用CDN,但我不知道这会如何防止文件创建问题(当然会防止IIS请求被拒绝),如果您使用的是CDN,并且您的服务器的cpu/ram利用率<30%,通常可以禁用磁盘缓存,这样就可以了。虽然效率不高,但CDN通常会减轻大部分负载。只需确保您只接受来自CDN的请求。另外,
Config.Current.Rewrite
事件是您的朋友-您可以在那里终止、修改和过滤所有图像处理请求。