追加する価値のある1つの注意点は、コードがこれらの画像の「許可されていない」サイズを生成しないことを確認することです。
したがって、次のURLは、イメージ1234の200x200バージョンがまだ存在しない場合は作成します。リクエストされたURLに、サポートする画像のサイズが含まれていることを確認することを強くお勧めします。
/images/get/200x200/1234.jpg
悪意のある人物がランダムなURLを要求し始め、常に画像の高さと幅を変更する可能性があります。これにより、サーバーに深刻な問題が発生し、基本的に攻撃を受けて、サポートされていないサイズのイメージが生成されます。
/images/get/0x1/1234.jpg
/images/get/0x2/1234.jpg
...
/images/get/0x9999999/1234.jpg
/images/get/1x1/1234.jpg
...
etc
これを説明するコードのランダムな断片は次のとおりです。
<?php
$pathOnDisk = getImageDiskPath($_SERVER['REQUEST_URI']);
if(file_exists($pathOnDisk)) {
// send header with image mime type
echo file_get_contents($pathOnDisk);
exit;
} else {
$matches = array();
$ok = preg_match(
'/\/images\/get\/(\d+)x(\d+)\/(\w+)\.jpg/',
$_SERVER['REQUEST_URI'], $matches);
if(! $ok) {
// invalid url
handleInvalidRequest();
} else {
list(, $width, $height, $guid) = $matches;
// you should do this!
if(isSupportedSize($width, $height)) {
// size is supported. all good
// generate the resized image, save it & output it
} else {
// invalid size requested!!!
handleInvalidRequest();
}
}
}
// snip
function handleInvalidRequest() {
// do something w/ invalid request
// show a default graphic, log it etc
}
?>