Является ли использование файлов и каталогов вместо базы данных для аутентификации пользователей хорошим вариантом? - PullRequest
0 голосов
/ 16 января 2012

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

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

Но в файловой системе имя пользователя являетсяимя папки, мы можем использовать некоторые file_exists ();функция (в PHP) и проверьте, существует ли каталог или нет.Если это так, то проверьте пароль и аутентифицируйте пользователя, в противном случае скажите, что пользователь с таким именем не существует.

Я хочу знать:

  1. Без учета безопасности, этолучшее решение, чем база данных, почему / почему нет?
  2. С учетом безопасности, какие проблемы могут возникнуть?

Спасибо ...

1 Ответ

3 голосов
/ 16 января 2012
  1. Это худшее решение, чем использование базы данных. Поскольку БД решает все сложные КИСЛОТНЫЕ проблемы , так что вам не нужно заново изобретать колесо.

  2. Это не имеет большого значения с точки зрения безопасности. При использовании решения БД вашему приложению необходим доступ на чтение / запись к таблицам БД, а ваш код должен убедиться, например, в: этот пользователь A не может читать или изменять данные для пользователя B. Точно так же, если вы делаете это с файлами, вашему приложению необходим доступ на чтение / запись к дереву каталогов, и поэтому приложению необходимо выполнить необходимые проверки доступа (если вы не можете использовать что-то вроде Suexec).

Кроме того, идея запроса имени пользователя в БД значительно медленнее, чем использование чего-то вроде file_exists (), не верна. БД может использовать индекс для быстрого поиска по индексируемому столбцу (скажем, по имени пользователя), а file_exists () требует, чтобы ядро ​​прошло путь для проверки файла, что составляет примерно такой же объем работы (немного зависит от того, как работает БД реализует индексы (обычно B-дерево) по сравнению с тем, как файловая система выполняет индексацию дерева каталогов).

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