相关疑难解决方法(0)

如何确定文件是否是.NET中的图像文件?

我不想依赖文件扩展名.我不知道它是什么类型的图像(.jpg,.png等),我只是想知道文件是否是图像.如果可能的话,我宁愿不使用任何非.NET dll.

我知道如何做到这一点的最好方法如下:

bool isImageFile;
try
{
    Image.FromFile(imageFile).Dispose();
    isImageFile = true;
}
catch (OutOfMemoryException)
{
    isImageFile = false;
}
Run Code Online (Sandbox Code Playgroud)

如上所述:http://msdn.microsoft.com/en-us/library/stf701f5.aspx,如果文件不是有效的图像格式,则Image.FromFile()抛出一个OutOfMemoryException.使用上面给出了我想要的结果,但是由于以下原因我不想使用它:

  • 我认为,出于性能原因,使用try-catches进行正常程序执行是一种不好的做法.
  • Image.FromFile()将整个图像文件(如果是图像文件)加载到内存中.这是浪费我假设因为我只需要文件类型,并且在我的代码中此时不需要进行任何进一步的图像处理.
  • 我不喜欢捕捉OutOfMemoryExceptions,因为如果有一个真正的内存不足问题,我的程序吞下它并继续前进?

有没有更好的方法来做到这一点?或者,我上面列出的任何/所有问题都是无根据的?

编辑:自从收到答案后,这些是我现在知道的三个解决方案:

  1. 通过Image.FromFile()try-catch 将整个图像加载到内存中.
    • 优点:对图像文件内容进行更深入的检查; 涵盖了许多图像类型.
    • 缺点:最慢; 从try-catch开始并将完整的映像文件加载到内存中; 捕获'真实'OutOfMemoryException的潜在危险.
  2. 检查图像文件的标题字节.
    • 优点:快速,低内存使用率.
    • 缺点:可能脆弱; 需要为每种文件类型编程.
  3. 检查文件扩展名.
    • 优点:最快; 最简单的.
    • 缺点:不适用于所有情况; 最容易出错.

(我没有看到明确的"赢家",因为我可以想象每个人都适合的情况.对于我的应用程序的目的,文件类型检查不经常发生,方法1的性能问题不是问题.)

.net file-format file-type image

18
推荐指数
2
解决办法
4415
查看次数

在php和htaccess中上传图像的安全方式

我在互联网上找到了以下代码,用于在php中上传安全图像.

我想知道它涵盖了图像上传中所有可能的攻击方式.

define('MAX_SIZE_EXCEDED', 101);
define('UPLOAD_FAILED', 102);
define('NO_UPLOAD', 103);
define('NOT_IMAGE', 104);
define('INVALID_IMAGE', 105);
define('NONEXISTANT_PATH', 106);

class ImgUploader
{
  var $tmp_name;
  var $name;
  var $size;
  var $type;
  var $error;
  var $width_orig;
  var $height_orig;
  var $num_type;
  var $errorCode = 0;
    var $allow_types = array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG);

  function __construct($fileArray)
  {
    foreach($fileArray as $key => $value)
    {
      $this->$key = $value;
    }
    if($this->error > 0)
    {
      switch ($this->error)
      {
        case 1: $this->errorCode = MAX_SIZE_EXCEDED; break;
        case 2: $this->errorCode = MAX_SIZE_EXCEDED; break;
        case 3: $this->errorCode = UPLOAD_FAILED; …
Run Code Online (Sandbox Code Playgroud)

php image-uploading

7
推荐指数
1
解决办法
2158
查看次数

外部图像漏洞

通过img标记包含外部图像以及如何避免它们,我的网站上会出现哪些安全漏洞?

我目前只检查mime-type提交时的扩展名和图像(可以在提交后更改URL)并URL在将其放入src属性之前进行清理.

php security xss image csrf

6
推荐指数
1
解决办法
514
查看次数

标签 统计

image ×2

php ×2

.net ×1

csrf ×1

file-format ×1

file-type ×1

image-uploading ×1

security ×1

xss ×1