Лучший способ создания токенов доступа к файлам для нескольких файлов, сохраняя при этом гибкость при переименовании путей - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть большой набор файлов (более 200), которые хранятся в разных папках. Например,

File 1: folder_a/subfolder/file 1.txt
File 2: folder_a/subfolder23/file 2.txt
File 3: folder_b/subfolder56/file 1.txt
File 4: folder_c/subfolder78/file 56.txt
...

Имена папок в разных файлах различаются.

Я намерен показать все эти файлы в списке, который мои пользователи будут загружать по отдельности, однако я не хочу раскрывать файл путь к моему пользователю.

Я хочу представить список ссылок, каждая из которых содержит токен.

<a href="access.php?token=sdj3123jjE8edasEOQE">File 1</a>
<a href="access.php?token=4634545232SDJEWsema">File 2</a>
<a href="access.php?token=LSOwldkOWMc3929sJKS">File 3</a>
<a href="access.php?token=TWjncwptn128ns92nsE">File 4</a>
...

Какие эффективные методы я могу использовать для генерации этого токена? который может выполнять следующие требования:

  1. Короткий токен
  2. Если бы я переименовал основную "folder_x", тот же токен все равно работал бы.

Мой текущий подход состоит в том, чтобы иметь sh все полные пути к файлам, и когда пользователь перейдет на access.php, он пробежит по всему моему каталогу файлов, чтобы вернуть огромный массив хэшированных путей. Если есть совпадение, он продолжит загрузку. Проблема с этим в том, что пункт № 2 не сработал. Мой текущий метод сервера интенсивен или плох?

1 Ответ

0 голосов
/ 20 апреля 2020

нет необходимости использовать any complicated token, если вы не хотите, чтобы path_file был каким-то образом hard to guess
(лучше: трудно получить доступ пользователю на основе интуиции: легко попробовать с целым числом).

Может хранить path_link в таблице
FilePath(pk autonumber id, key varchar filepath)

Запись # 1,Path1
Запись # 2,Path2

Ссылка на html может быть :
<a href="access.php?token=1">File 1</a>

Php file access.php

...
$sqlfilePath = "select filepath from FilePath where id=".$GET["token"]
run sql and generate the output
...


Если хотите получить токен с трудным угадыванием, просто сгенерируйте токен на основе предопределенных collection/array и random ... или используйте hashed name ... до вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...