3

我正在使用响应式 FileManager 9.14.0,TinyMCE 5.0.16 和 Laravel 6 在 Nginx 1.16.1 上运行

我有以下文件夹结构:

| public
|    |- uploads
|    |- thumbs
|    |- filemanager
|    |- js
|    |   |- tinymce
|    |   |   |- plugins
|    |   |   |   |- responsivefilemanager
|    |   |   |   |   |- plugin.min.js

我使用 laravel 身份验证来保护“创建”页面,用户可以在其中使用 tinyMCE 添加文本并使用 RFM 作为 tyniMCE 插件上传图像。

但是如果使用以下 URL,则可以直接访问 RFM

http://www.myhost.test/filemanager/dialog.php

我怎样才能防止这种行为。我希望只能从 tinyMCE 编辑器访问 RFM。

4

2 回答 2

0

我不熟悉 laravel 但...

在响应式文件管理器 9.0 中有一个名为 config 的文件夹,其中包含 config.php

| public
|    |- uploads
|    |- thumbs
|    |- filemanager
|    |   |- config
|    |   |   |- config.php
|    |- js
|    |   |- tinymce
|    |   |   |- plugins
|    |   |   |   |- responsivefilemanager
|    |   |   |   |   |- plugin.min.js
  1. 打开 config.php 并更改 define('USE_ACCESS_KEYS', false); // TRUE or FALSE -------- to ------> define('USE_ACCESS_KEYS', true); // TRUE or FALSE

这会强制响应式文件管理器使用 Aaccess Key 来防止所有尝试访问您的文件和文件夹。

  1. 在第 190 行的同一文件中,添加他们需要为其使用 file-manager 的用户 auth_key 。例如 :

    username: jim auth_key: a1s2d3f4g5h6j7k8l9mm
    username: lisa auth_key: zqxwd3f4vrbth6j7btny

所以第 190 行应该改写如下:

'access_keys' => array( "a1s2d3f4g5h6j7k8l9" , "zqxwd3f4vrbth6j7btny"),
  1. 转到您的表单并添加一个按钮/链接以访问响应文件管理器

    <a href="https://www.example.com/admin/responsive-filemanager/filemanager/dialog.php?akey=<?php echo {{{your authenticated user AUTH_KEY}}}; ?> </a>

如果没有 {{{your authenticated user AUTH_KEY}}} 有 2 种方法:1))添加列 auth_key 到您的用户表并生成 auth_key 对于他们想要访问两个数据库中的响应式文件管理器的用户来说应该是相等的和 config.php 文件。2)) 使用用户名而不是 auth_key 所以你在第 19 行的配置将是:'access_keys' => array("jim", "lisa"),

现在您的响应式文件管理器访问链接将如下所示:

<a href="https://www.example.com/admin/responsive-filemanager/filemanager/dialog.php?akey=jim ></a>

jim 在这里是静态的,您应该通过调用函数使其动态化,以返回经过身份验证的用户 USERNAME 并将其放在链接中的 &akey= 之后

现在,如果在 access_key 数组中找到链接中的键值,则响应式文件管理器页面将起作用,否则它会显示访问被拒绝!!!

于 2021-01-09T06:24:18.237 回答
0

如果它仍然相关,我可以向您展示我在 Laravel 8 中是如何做到的

我从相反的方向着手 - 如果用户在管理员下登录,则无需检查它,因此USE_ACCESS_KEYS执行FALSE,否则 -TRUE

因此,如果他没有通过管理员身份验证,那么他将无法访问 ResponsiveFileManager。

为此,请在responsive_filemanager/filemanager/config/config.php文件的开头某处添加这样一个函数。

(指定您自己的文件“/vendor/autoload.php”“/bootstrap/app.php”的路径)

function use_access_keys() {
    require dirname(__DIR__, 4) . '/vendor/autoload.php';
    $app = require_once  dirname(__DIR__, 4) . '/bootstrap/app.php';
    $request = Illuminate\Http\Request::capture();
    $request->setMethod('GET');
    $app->make('Illuminate\Contracts\Http\Kernel')->handle($request);
    if (Auth::check() && Auth::user()->hasRole('admin')) {
        return false;
    }
    return true;
}

然后这一行:

define('USE_ACCESS_KEYS', false);

替换为:

define('USE_ACCESS_KEYS', use_access_keys());

还有一瞬间。如果之后打开FileManager,突然弹出如下错误:“Undefined variable: lang”

然后打开responsive_filemanager / filemanager / dialog.php

找到数组$get_params并在其中更改如下:

'lang' => 'en',

于 2021-03-03T12:10:13.393 回答