Как я могу получить доступ к папке за пределами root codeigniter, не передавая конфиденциальную информацию в URL? - PullRequest
1 голос
/ 06 марта 2020

Мой код (просмотр) Пока все работает хорошо, когда я получаю доступ к папке (закачки) с помощью root, но я хотел бы получить доступ к папке, расположенной в другом месте, на том же сервере, не показывая конфиденциальную информацию в URL при загрузке изображения.

   <img src="<?php echo base_url('/uploads/'.$popular_car['img_path'])?>" class="card-img-top" 
   style="height: 150px;"></div>

1 Ответ

0 голосов
/ 06 марта 2020

Есть много альтернатив. Большинство из них будет связано с использованием базы данных. Это то, что я делаю (кратко изложено)

Каждый файл, к которому необходимо получить доступ, имеет запись в таблице. Запись имеет основной идентификатор, секретный случайный токен и путь к файлу. Таблица индексируется как по первичному идентификатору, так и по токену.

На URL я получаю что-то вроде base_url('controller/file_access/).$id.'/'.$token. Получив запрос, я проверю таблицу файлов, если совпадут оба параметра, я передам файл в браузер. Этот способ выполнения действий, хотя и немного более сложный, имеет два основных преимущества:

1. - он не позволяет пользователю просто попробовать разные числовые идентификаторы c и посмотреть, что отображается. Поскольку идентификаторы имеют номера c и автоинкремент, все, что вам нужно сделать, - это циклы от 1 до 100000 и загрузка всех файлов. Добавление токена и запрос к таблице с обоими параметрами значительно снижает риск того, что кто-то получит файл, для которого он / она не предназначен.

2.- он скрывает реальное местонахождение файла и передает его в браузер. таким образом выглядит (в глазах браузера) как находящийся в example.com/controller/file_access/id/token, но реальный или относительный путь к изображению остается скрытым и недоступным из Интернета.

Используя это в качестве основы, вы Вы можете добавить много логи c поверх этого в зависимости от ваших потребностей. Вы также можете иметь поле «allow_user» в таблице, если файлы являются личными и / или пользовательскими c, чтобы вы не передавали файл в потоковом режиме, если пользователю не разрешено его видеть (даже если он имеет правильный Комбинация ID / токен).

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

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