私は現在、PHP で Imagick ライブラリを使用しており、Image Magick のサイズ変更機能を使用しています。減圧爆弾と ImageMagick の脆弱性について学びました。
実際にメモリ/ディスクにロードせずに、イメージに ping を実行してイメージのサイズを確認する方法を確認しました。また、ImageMagick のメモリとディスクの制限を制限して、巨大なファイルをディスクに書き込まないようにする方が安全です。
私は読んだことがありますが、setResourceLimit() でそれを行うことができます。 http://php.net/manual/en/imagick.setresourcelimit.php
IMagick::setResourceLimit(IMagick::RESOURCETYPE_MEMORY , 100);
IMagick::setResourceLimit(IMagick::RESOURCETYPE_DISK , 100);
$thumb = new Imagick('image.png');
$thumb->resizeImage(320,240,Imagick::FILTER_LANCZOS,1);
ただし、ディスクとメモリの制限を設定した後、画像がこの制限に達した場合、セグメンテーション違反エラーだけが発生し、例外はスローされません。これでは、適切に処理することができません。
アップデート:
私が使用しているパッケージのバージョンは次のとおりです。
dpkg -l | grep magick
ii imagemagick-common 8:6.6.9.7-5ubuntu3.3 image manipulation programs -- infrastructure
ii libmagickcore4 8:6.6.9.7-5ubuntu3.3 low-level image manipulation library
ii libmagickwand4 8:6.6.9.7-5ubuntu3.3 image manipulation library
ii php5-imagick 3.1.0~rc1-1 ImageMagick module for php5