laravel - laravel 的路由是否足以抵御文件遍历攻击?

标签 laravel security

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/

相关文章:

security - 为什么 Kerberos 协议(protocol)不具有完美的前向保密性?

Laravel Bootstrap 模态提交按钮不起作用

php - Laravel 查询构建器条件与当前查询使用何时

javascript - javascripts 访问密码字段值是否被视为安全风险?

php - 我应该使用 PDO 来清理我的 Sql 查询还是 "mysql_real_escape_string"就足够了?

匹配安全 openssl 和不安全 openssl 的正则表达式

javascript - 您如何获得 API Key 以访问服务预授权?

php - 尝试跨 View 共享数据 Laravel

mysql - Laravel 数组到多条记录的字符串转换

mysql - 选择行 (“YYYYMMDD” 字符串格式)<= 今天