Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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
如何在ASP.NET应用程序中使用图像大小调整来防止DOS攻击?_Asp.net - Fatal编程技术网

如何在ASP.NET应用程序中使用图像大小调整来防止DOS攻击?

如何在ASP.NET应用程序中使用图像大小调整来防止DOS攻击?,asp.net,Asp.net,我目前正在开发一个网站,用户可以上传图像作为头像使用,我知道这让我听起来有点偏执,但我想知道,如果恶意用户上传的图像尺寸非常大,会消耗服务器内存(作为DOS攻击),我已经对可上传的文件大小有了限制(250 k)但是,如果图像(例如)是包含一种颜色的JPEG,并且使用非常低的质量设置创建,则即使是该尺寸也可以允许图像具有难以置信的大尺寸。考虑到图像在调整大小(即未压缩)时作为位图上传到内存中,我想知道是否会发生此类DOS攻击,即使要先检查图像尺寸,也必须先将其上传到内存中,您是否听说有攻击利用了此

我目前正在开发一个网站,用户可以上传图像作为头像使用,我知道这让我听起来有点偏执,但我想知道,如果恶意用户上传的图像尺寸非常大,会消耗服务器内存(作为DOS攻击),我已经对可上传的文件大小有了限制(250 k)但是,如果图像(例如)是包含一种颜色的JPEG,并且使用非常低的质量设置创建,则即使是该尺寸也可以允许图像具有难以置信的大尺寸。考虑到图像在调整大小(即未压缩)时作为位图上传到内存中,我想知道是否会发生此类DOS攻击,即使要先检查图像尺寸,也必须先将其上传到内存中,您是否听说有攻击利用了此漏洞?我太担心了吗?

我想你应该检查一下图像的尺寸。由于只有几种格式,这并不难,您可以轻松地过滤出大图像。通常,你可以上传头像的网站会告诉你,不仅要有小于特定文件大小的图像,还要提供图像尺寸边界,所以通常要检查这一点。

这些尺寸应该能够在不将整个图像地图加载到内存中的情况下获得?也许您可以在上找到有关此问题的更多信息。

您必须验证图像文件是否确实是图像文件。问题不是对服务器的攻击。问题是有人上传ActiveX控件而不是图像。然后,该文件将下载、安装并破坏每台进行下载的Windows计算机

威胁不在于你。威胁是你将成为病毒携带者

您必须验证每个文件以确认它是真实的图像文件。您可以检查尺寸,如果需要,可以不检查。大多数图像处理库都可以读取图像的标题,检查尺寸和像素数等等


通常,人们会根据图像制作缩略图,一旦打开图像,你也可以这样做。

DoS可能是一个问题,也可能不是一个问题,这取决于是否有人决定以你的网站为目标

<>但是,对于您的站点扩展到并发用户的1000S,您可以考虑在单独的进程中处理图像处理。

当图像处理由页面代码处理时,您将面临耗尽内存、CPU或ASP.NET线程的风险——瓶颈取决于您的服务器配置

可能的解决办法:

  • 用户上传图像
  • 图像保存到共享目录
  • 图像路径保存到数据库中的队列中
  • 页面返回消息“感谢上传,您的头像很快就会准备好”
  • Windows服务*会定期唤醒并检查数据库队列
  • 该服务调整队列中等待的任何图像的大小,将输出保存到共享目录,并将其从队列中删除
  • 服务更新数据库,指示用户的化身已准备就绪。因此,下次他们访问他们的个人资料页面时,他们会看到调整大小的图像
  • *理想情况下,Windows服务在独立于web服务器的单独服务器上运行,可以扩展以满足未来的需求


    这项努力是否值得,取决于您的预期流量。您可以使用负载测试工具编写脚本并模拟这些操作,以查看您的站点是否能够处理负载。

    感谢您的回答,实际上我已经在我的应用程序中打开并调整了图像大小,因此如果它们不是真实的图像,就不会保存在服务器上,我的问题是在我打开图像之前检查它们,这样我就可以避免DOS攻击,“内存不足攻击”是不存在的。您的图形库已经处理了这个问题。