2013-07-26 3 views
0

Я загрузил несколько файлов на сервер. Ссылка, предоставленная мне, довольно проста i-e; никаких знаков/символов и т. д. Если я предоставил ту же ссылку пользователю для загрузки данных, это может привести к взлому моего сервера или потере данных. Теперь мой вопрос заключается в том, чтобы зашифровать этот видШифрование URL-адресов в PHP

www.hello.com/myApp/myFile.mp3 

ВГД и обеспечивают зашифрованный URL для пользователя, который браузер может понять.

С уважением

+1

Почему это должно привести к взлому вашего сервера? – bwoebi

+0

Вы можете использовать urlEncode/rawURLEncode (любое преобразование может также использоваться как шифрование), но это не решит вашу проблему, если вы скажете, что у вас есть проблема с безопасностью. Вероятно, вам следует объяснить, что вы беспокоитесь о безопасности, поскольку ваша проблема может быть более простой. – griffin

+0

@griffin просто рассмотрите этот один возможность. Если пользователь устанавливает URL-адрес, например: www.hello.com/myApp, он увидит весь список загруженных файлов и сможет его загрузить. Я хочу скрыть эту часть /myApp/file.txt с зашифрованным текстом. – Naruto

ответ

0

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

Вместо ссылки непосредственно на файл, вы должны ссылаться на что-то вроде download.php?fileid=$some_file_id, и в вашей базе данных вы просто вставляете идентификатор пользователя (или IP-адрес) и идентификатор файла каждый раз, когда файл загружается. Затем, чтобы отобразить файл обратно пользователю, вы бы проверить, сколько загрузок этого файла были сделаны пользователем, и если оно меньше, чем ваш порог, например:

SELECT COUNT(*) FROM downloads WHERE user = :user AND file_id = :id 

Затем получить PHP эхо содержимое файла в браузер.

Добавить другие положения, такие как ограничение его на X загрузок за последние 24 часа и т. Д. Или, тем не менее, вы хотели бы его обработать.

Другие вещи, которые вы могли бы сделать, хранить файлы вне корневого каталога документов (или защиты прямого доступа с .htaccess или аналогичный), и в том числе хэш имени файла в ссылке, так что кто-то не мог просто сделать download.php?fileid=1 и предположим, следующий следующий: download.php?fileid=2.

+0

Nitpicking, но: Конечно, вы можете зашифровать URL-адрес - это просто строка. Плюс: вам не нужна база данных (и вы уже говорите о том, что здесь находится sql, есть и другие) для реализации некоторой системы доступа. Поскольку он, вероятно, использует apache по тому, что он говорит, htpasswd basic auth может делать то же самое, что и группы пользователей, без какой-либо базы данных или кода, кроме одного файла apache config/htaccess, который вы даже можете генерировать в Интернете. – griffin

+0

Я думаю, что неправильно понял фактическую цель этого. Я не видел ваших комментариев под вопросом. – Mike

+0

Я думаю, вы действительно понимаете это лучше, чем ОП. После вашего редактирования я просто поддержал его, так как я думаю, что он идеально подходит для того, что он пытается достичь (мысль на самом деле не просит ...) – griffin

1

Исправить меня, если я неправильно понял, но пытаетесь ли вы запретить кому-либо загружать файл, если вы не скажете им, что это нормально его скачать?

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

Есть несколько способов сделать эту угрозу менее вероятной.

  1. Сделать URL очень длинным и неопознанным. Просто переименуйте файл в случайное значение. Из командной строки (Linux)

    echo http://example.com/file.mpe $(date) | md5sum d8a5e8d341135379b8ad38f1d06970be

    Или еще проще, выбрать случайный пароль из http://tooln.net/pw/ и переименовать файл в один из паролей без символов. Либо трудно догадаться.

  2. Если вы знаете человека, вы можете легко предоставить пароль и установить пароль в каталоге. Вы можете включить passwords per directory через apache.

  3. Отключить индексирование сайта через robots.txt.

Смежные вопросы