Skip to content

Commit c69290c

Browse files
committed
fix: add more checks against a possible path traversal
1 parent b2e1f46 commit c69290c

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/Http/Controllers/ImageTransformerController.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Illuminate\Support\Facades\File;
1616
use Illuminate\Support\Facades\RateLimiter;
1717
use Illuminate\Support\Facades\Storage;
18+
use Illuminate\Support\Str;
1819
use Intervention\Image\Drivers\Gd\Encoders\WebpEncoder;
1920
use Intervention\Image\Encoders\AutoEncoder;
2021
use Intervention\Image\Encoders\GifEncoder;
@@ -30,11 +31,13 @@ public function __invoke(Request $request, string $options, string $path)
3031
{
3132
$pathPrefix = config()->string('image-transform-url.public_path');
3233

33-
$publicPath = public_path($pathPrefix.'/'.$path);
34+
$publicPath = realpath(public_path($pathPrefix.'/'.$path));
3435

35-
abort_if(File::missing($publicPath), 404);
36+
abort_unless($publicPath, 404);
3637

37-
abort_if(! in_array(File::mimeType($publicPath), AllowedMimeTypes::all(), true), 404);
38+
abort_unless(Str::startsWith($publicPath, public_path($pathPrefix)), 404);
39+
40+
abort_unless(in_array(File::mimeType($publicPath), AllowedMimeTypes::all(), true), 404);
3841

3942
$options = $this->parseOptions($options);
4043

0 commit comments

Comments
 (0)