Одноразовый пароль для скачивания - PullRequest
3 голосов
/ 16 января 2012

Каков наилучший подход для реализации одноразового пароля для загрузки файла? Вначале я думал об использовании PHP, назначении пароля пользователю и после входа в систему при удалении учетной записи. Я хотел бы сохранить учетную запись в файле, поскольку я не ожидаю, что когда-либо будет иметься больше, чем горстка действительных пользователей. Нужно ли отслеживать сессии или есть простой способ сделать это на одном сайте?

О, я не могу использовать внешний сайт, так как данные чувствительны и должны храниться локально, а также не могу загружать какое-либо новое программное обеспечение и, следовательно, ограничен HTML, JavaScript и PHP (я считаю).

Ответы [ 3 ]

3 голосов
/ 16 января 2012

Практически всего лишь комбинация ответов Ильмари Каронена и Мартинстоэкли, но с более подробной информацией.

Использование таблицы базы данных такого типа:

temp_passes

uuid  | createTime | expireTime | filename
------------------------------------------
123-4 | 1326735047 | 1327735047 | myDisk.iso

Каким-то образом вы генерируете UUID для пользователя и вставляете его в базу данных. Затем, давая ссылку на скачивание, вы используете UUID следующим образом:

http://example.com/download.php?id=123-4

или, альтернативно, иметь поле пароля, в котором пользователь должен ввести свой идентификатор, и отправить его в download.php. В любом случае:

  1. Проверьте идентификатор по базе данных, убедившись, что он существует и не истек.
  2. Удалите идентификатор из базы данных, чтобы его нельзя было использовать снова.
  3. Пусть PHP сгенерирует загрузку, вероятно, используя readFile().

Вы можете удалить идентификатор до или после завершения загрузки, это ваше дело. Однако, если это большой файл, вы, вероятно, захотите сделать это в первую очередь, чтобы другие люди не могли использовать один и тот же «пароль» для нескольких одновременных загрузок.

2 голосов
/ 16 января 2012

Звучит так, будто вы хотите предложить одноразовое действие, а не реальный логин. Вы можете сделать это, создав UUID и создав ссылку с ним, например:

http://www.example.com/action.php?act=129d1e24-16f1-11e1-99fe-66756e647a65

Этот UUID вам придется хранить на сервере (базе данных) вместе с информацией о том, какой файл пользователь может загрузить. После того, как пользователь щелкнул ссылку, он может загрузить только этот файл, а когда загрузка завершится, вы удалите UUID из базы данных.

2 голосов
/ 16 января 2012

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

(Да, я понимаю, что этот ответ очень расплывчатый и общий, но и ваш вопрос тоже. Если вы можете уточнить, в чем вы не уверены, я мог бы дать лучший ответ. )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...