PHP, чтобы служить скачать для Java-приложения

Мне интересно, как сделать сервер загрузки более надежным … На данный момент у меня есть сервер, на https, хранящий zip-файлы, названные со случайным хешем, проиндексированные моей базой данных. Содержащий каталог не разрешает листинг (htaccess), чтобы избежать ручной загрузки, непосредственно просматривая каталог на сервере.

Java-приложение отображает описание файлов, и если пользователь хочет его скачать, он просто нажимает на кнопку «скачать». Приложение Java, если этому пользователю разрешено загружать, отправляет учетные данные в мой PHP-скрипт на сервере, PHP-скрипт проверяет их, снова проверяет, разрешено ли самому пользователю загружать этот файл, получает файл filename.zip из БД, проиндексированной идентификатор файла, который пользователь хочет загрузить, и возвращает это имя файла. Приложение Java читает это имя файла и загружает файл, используя

Url url = new URL("https://myserver.com/assets/theAssetToDownload.zip")
URLConnection urlConn = url.openConnection();

InputStream is = urlConn.getInputStream();
FileOutputStream fos = new FileOutputStream("test.zip");

byte[] buffer = new byte[4096];
int len;

while ((len = is.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}

(сокращенный код, нужно попробовать / поймать, is / fos.close () и т. д. и т. д.)

Пока все хорошо, работает хорошо … Но … Если кто-то введет в браузер прямой URL, файл также будет загружен, без четкой проверки на авторизацию …

Поэтому я подумал: эй, не позволяйте никому, кроме PHP-скрипта, получить доступ к каталогам ресурсов! Опять же, это простой htaccess.

Но как тогда скачивается загрузка?

Будет ли это заголовок и вывод в моем PHP-скрипте, например:

header("Content-type: application/octet-stream");
header("Content-disposition: attachment;filename=test.zip");
readfile(test.zip);

В таком случае, как мне прочитать это со стороны Java? Также с getInputStream ()?

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

Спасибо всем, кто пытается помочь / посоветовать мне!

1

Решение

Вы можете хранить файл где-то, недоступном из Интернета, но все же доступным для чтения веб-серверу, а затем с помощью htaccess направлять все запросы в ваш php-скрипт. Объедините это с тем, что у вас уже есть (заголовки, вывод с readfile) и авторизацией, и так и должно быть.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]