2011-12-22 3 views
1

Я пытаюсь создать структуру папок, как так:Структура каталогов Логика

один уровень ВЫШЕ веб-каталога общественности. Единственный уникальный ключ (помимо самого user_id) - это электронная почта пользователя, так как их адрес электронной почты является их именем пользователя, поэтому ...

Вопрос: смогут ли люди получить доступ к этим каталогам и получить доступ к электронному адресу пользователя? Насколько плоха эта идея? Какие возможные альтернативы вы предлагаете?

Спасибо.

+2

Почему вы не храните эти письма в базе данных? – RageZ

+0

Я думаю, он хочет использовать адрес электронной почты в качестве имени папки. – jprofitt

+0

Вы можете сделать это так: вам просто нужно установить некоторые правила доступа к Apache, чтобы ограничить доступ к этому конкретному каталогу. RageZ - Я не думаю, что загруженные файлы должны поступать в базу данных. Возможно, если вы внедрили справочную таблицу, которая могла бы работать. – Kevin

ответ

1

Определенно убедитесь, что вы используете хеши вместо обычных адресов электронной почты. Это обязательно.

Помимо этого, я думаю, что это безопасно (и небезопасно), поскольку решение может быть основано на безопасности через неизвестность (т.е. ваша безопасность зависит только от того, что никто не знает URL-адреса), но если они это сделают, они могут получить к ним доступ без ограничений.) Существует много потенциальных ямок - пользователь может добавлять URL-адрес; он может быть внедрен где-то на странице; он может храниться в сервере, журналы браузера и прокси ...

+0

Предположим, что я реализовал правила доступа к Apache, как предлагал Кевин выше. Даже если люди узнают URL-адрес этих папок (которые будут адресами электронной почты), смогут ли они получить к ним доступ, поскольку они будут расположены в папке над веб-каталогом? Насколько легко было бы кому-то проходить через эти папки и извлечь все адреса электронной почты? Имеют ли они доступ к этому? – user482520

+0

@user, если каталог * вне * веб-корня, никакой внешний пользователь не будет иметь доступа к каталогу. Это включает, однако, пользователей вашего веб-сайта. Это то, что вы хотите? –

+0

Итак, если я предоставил ссылку на файлы пользователя, чтобы их можно было скачать, при входе пользователя они не были бы доступны для пользователя? – user482520

0

Посмотрите на функцию PHP dir: http://php.net/manual/en/class.dir.php

Если вы хотите, чтобы папки, чтобы быть публично доступными для пользователей через Интернет, зачем класть папки над корнем?

Кроме того, вы можете использовать какой-либо хэш для имен папок: 1) потому что никто не хочет, чтобы их адреса электронной почты публично раскрывались, и 2) выявление внутренних user_ids могло привести к эксплойтам.

0

Как только Пекка ответил; это может быть хорошей идеей хешировать адреса электронной почты, так как есть большая вероятность, что ссылки могут быть отправлены на форум или аналогичные, и после этого сообщение может быть обходным с помощью искателя адресов электронной почты. Я думаю, что просто простой хэш (например, md5) адреса (почти) решит это.

См. this thread о том, как предотвратить список каталогов, и что делать, если способ Apache не работает.

+0

Я определенно собираюсь реализовать какое-то хэширование сейчас. Благодарю. – user482520

0

Хеш-сообщения электронной почты для использования в качестве имен папок и поместите их поверх веб-корня.

Вы можете использовать простую аутентификацию, чтобы предоставить доступ к этим файлам и файлу php, чтобы их прочитать и отправить в браузер.

+0

Можете ли вы рассказать об простой части аутентификации? благодаря – user482520