Прежде, чем я начну, я должен предупредить вас, что я не большой веб-программист, поэтому мои методы могут показаться несколько окольными, а терминология, которую я использую, может быть неудобной.
Вот ситуация. Я разрабатываю сайт для пользователей, чтобы визуализировать данные.
У меня есть публичная php-страница, сидящая по пути /var/www/thepage/index.php
(да, сервер Linux + apache). Это главная страница сайта, на которой пользователи выбирают форму.
При отправке формы будет вызвана вторая страница php, и здесь выбор форм с первой страницы php передается в javascript, который создает визуализацию. Чтобы это произошло, CSV-файлы сначала записываются в этот каталог с помощью php-скрипта, который запрашивает базу данных MySQL.
Дело в том, что я хочу, чтобы пользователи могли видеть визуализации, но не могли загружать файлы CSV (если они не являются администраторами). Как разрешить администратору загружать файлы, это создать защищенный ( .htaccess ) подкаталог /var/www/thepage/secure/
, имеющий индекс html, который запускает сценарий cgi после входа администратора (запрашивается) при нажатии на ссылку для скачивания). Этот скрипт копирует последние файлы (с динамическими именами) из каталога /var/www/thepage/
и перемещает их в каталог secure/
со статическими именами файлов. Ссылки на скачивание, указывающие на эти файлы со статическими именами, находятся в защищенном index.html. Однако, если пользователь просматривает исходный код 2-й страницы php, он также может загрузить файлы, поскольку они знают пути и не защищены.
Если удалить права доступа к файлу, скрипт php также не сможет читать файлы, что приведет к сбою визуализации (я хочу, чтобы обычные пользователи могли видеть визуализации). Также важно иметь файлы, потому что у меня есть cgi-скрипт (bash + awk), выполняющий математическую функцию для файлов, которая также требует разрешения
Затенение имен файлов на самом деле тоже не работает, так как файлы пишутся на лету, а исходный код html-страницы покажет записанные скрытые имена файлов csv.
Как я могу обойти эту проблему? Я бы предпочел , а не , чтобы создавать сеансы и входить в систему для обычных пользователей и т. Д ...