Route::get('/transaction/{name}', 'TransactionController@download');
public function download($name){
$path = storage_path('app/something/') . $name . '.xml';
return response()->download($path);
}
使用此操作的用户只能下载 app/something 中的 .xml 文件。
是否可以从指定的 app/something
文件夹之外下载数据。
最佳答案
Laravel 不能防止遍历攻击 - 路由器将返回您的代码示例中的任何值,这意味着有人可以访问您的文件系统!
您可以使用 PHP 的 basename()
通过从字符串中删除任何路径引用来清理 $name
:
Route::get('/transaction/{name}', 'TransactionController@download');
public function download($name){
$path = storage_path('app/something/') . basename($name, '.xml') . '.xml';
return response()->download($path);
}
关于laravel - laravel 的路由是否足以抵御文件遍历攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41736961/