Логика структуры каталогов

Я пытаюсь создать структуру папок следующим образом:

  • Загруженные файлы
      • 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 может привести к эксплойтам.

Другие вопросы по тегам