【问题标题】:Image Resizer - Best Practice for securityImage Resizer - 最佳安全实践
【发布时间】:2023-03-08 09:30:01
【问题描述】:

我们目前正在测试 Image Resizer 库,其中一个问题是,如果有人以编程方式向服务器发送数千个任意大小的图像大小调整请求,导致 CPU/RAM 过载,我们如何避免对网站的恶意攻击?服务器并可能由于大量缓存文件而导致磁盘空间耗尽。

有没有办法将某些维度列入白名单?或者避免这种情况的最佳做法是什么?

谢谢! 斯蒂芬

【问题讨论】:

    标签: imageresizer


    【解决方案1】:

    在对 ImageResizer 的 (D)DOS 攻击期间,CPU 或 RAM 通常都不会过载。内存分配是连续的,这意味着除非剩余大约 15-30% 的可用 RAM,否则无法处理图像。在 default 管道下,只有 2 个内核用于图像处理,因此普通服务器也不会看到 CPU 饱和。

    一般来说,攻击 ASP.NET 网站的方法远比通过 ImageResizer 有效得多。任何重数据库的页面都更有可能成为弱点,因为内存分配更小,更容易使服务器饱和。

    启用 autoClean="true" 可以缓解磁盘空间不足的情况。

    如果您是一个高知名度的网站,有很多不怀好意的人,您还可以考虑以下几点:

    1. 使用请求签名 - 仅接受您的服务器生成的 URL。
    2. 使用Presets plugin to white-list defined permitted command combinations

    这两者都会降低开发敏捷性并限制您对响应式网页设计的选择,因此除非您过去确实受到过攻击,否则我不建议您这样做。

    在实践中,针对动态映像软件的 (D)DOS 攻击很少能用于破坏任何东西,除非是临时的未缓存的映像,即使在同一应用程序池下运行也是如此。由于访问过的图片往往会被缓存,实际效果比较可笑。

    【讨论】:

    • 谢谢....您能否详细说明 15-30% 可用 RAM 的情况?如果有多个 (10+) 图像大小调整请求进入同一服务器怎么办。服务器会不会出现内存不足的问题?或者请求会“等待”直到有更多内存可用?谢谢! 〜斯蒂芬
    • 如果没有足够的内存来处理请求,则返回 500 错误。这些实际上很少见,因为 ImageResizer 旨在防止这种情况发生,除非服务器完全饱和。
    • @ComputerLinguist,我们如何实现选项一:使用请求签名 - 只有您的服务器生成的 URL 才会被接受...您能建议吗?谢谢!
    • @S. Cheung,我们也面临同样的问题。你能告诉你你是如何解决这个问题的吗?
    猜你喜欢
    • 2010-09-28
    • 1970-01-01
    • 2013-06-19
    • 2014-01-17
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多