值得添加的一个注意事项是确保您的代码不会生成这些图像的“未经授权”大小。
因此,如果图像 1234 尚不存在,则以下 URL 将创建 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
}
?>