Логика структуры каталогов
Я пытаюсь создать структуру папок следующим образом:
- Загруженные файлы
- aaron.doe@hotmail.com
- б
- с
- ... вплоть до z
один уровень выше общедоступного веб-каталога. Единственный уникальный ключ (кроме самого user_id) - это электронная почта пользователя, так как их электронная почта является их именем пользователя, так что...
Вопрос: смогут ли люди получить доступ к этим каталогам и получить адрес электронной почты всех пользователей? Насколько это плохая идея? Какие возможные альтернативы вы предлагаете?
Благодарю.
4 ответа
Обязательно убедитесь, что вы используете хеши вместо обычных текстовых адресов электронной почты. Это обязательно.
Кроме этого, я думаю, что это настолько же безопасно (и небезопасно), как и решение, которое основано на безопасности через неизвестность (т.е. ваша безопасность зависит исключительно от того, что никто не знает URL-адреса - но если они знают, они могут получить к ним доступ без ограничений.) Существует множество потенциальных пробелов - пользователь может добавить URL в закладки; это может быть встроено где-то на странице; это может быть сохранено в журналах сервера, браузера и прокси...
Как Пекка только что ответил; Хорошей идеей может быть хэширование адресов электронной почты, поскольку существует большая вероятность того, что ссылки могут быть опубликованы на форуме или подобном, а затем пост может быть отсканирован сканером адресов электронной почты. Я думаю, что простой хеш (например, md5) адреса может (почти) решить эту проблему.
Посмотрите эту ветку о том, как предотвратить листинг каталога и что делать, если не работает Apache.
Хэшируйте электронные письма для использования в качестве имен папок и поместите их выше веб-корня.
Вы можете использовать простую аутентификацию, чтобы дать доступ к этим файлам и php-файл, чтобы прочитать их и отправить их в браузер.
Посмотрите на PHP dir
функция: http://php.net/manual/en/class.dir.php
Если вы хотите, чтобы папки были общедоступными для ваших пользователей через Интернет, зачем размещать папки над корневым веб-каталогом?
Кроме того, вы можете рассмотреть возможность использования своего рода хэша для имен папок, 1) потому что никто не хочет, чтобы их адреса электронной почты были публично раскрыты, и 2) раскрытие внутренних user_ids может привести к эксплойтам.