Как бы я пошел о создании логина - PullRequest
2 голосов
/ 25 июля 2011

Настройка: У меня есть приложение для Android, которое до сих пор может зарегистрировать пользователя, вставив значения в удаленную базу данных MySQL. Я сейчас пытаюсь реализовать вход в систему.

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

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

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

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

(я не возражаю против полной доработки, мне просто нужно знать, с чего начать)

1 Ответ

1 голос
/ 25 июля 2011

Никогда не подключайте клиента к db-серверу.Нет никакого способа перехватить попытки взлома, потому что привилегии очень простые (SELECT, UPDATE и т. Д., Они игнорируют запрос):

UPDATE users SET name='%s' WHERE userID=%i // where %i will be defined as the real userID

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

UPDATE users SET name='%s' WHERE userID=15 // ... or any other variable

Вместо этого вам следует создать веб-интерфейс API, который будет проверять каждый запрос или, что лучше, поддерживать только определенные API-команды:

account/update.json?name=%s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...