Я знаю, что стандартный ответ для тех, кто пытается внедрить аутентификацию пользователей, — использовать готовую и протестированную библиотеку, но мне всегда нравилось изобретать велосипед.
Я создал систему аутентификации пользователя и данных сеанса на PHP, используя для входа в систему метод «вызов-ответ». Для всех частных страниц в начале требуется функция, которая проверяет сеанс, проверяя время ожидания сеанса, IP-адрес, браузер и 256-битный токен-ключ. После проверки сеанса он сбрасывает тайм-аут и генерирует новый токен-ключ.
Однако самым большим слабым местом, которое я вижу на данный момент, является регистрация пользователя. Я еще не писал, но похоже, что мне придется передавать от клиента на сервер либо пароль в открытом виде, либо его хешированную версию. В любом случае, если пакет перехвачен, у шпиона есть все, что ему нужно для входа в систему.
Есть ли простой способ как-то зашифровать его на стороне клиента и расшифровать на стороне сервера? Или, возможно, отправить его кусками с задержками и фиктивными пакетами.
Кроме того, если есть какие-либо другие проблемы, которые я мог пропустить, пожалуйста, дайте мне знать.
- При входе запрашивается соль для вызова, и клиент хэширует пароль перед его отправкой
hash(hash(password). salt). - Для сохранения сеанса у клиента должен быть актуальный токен-ключ, а также браузер и IP-адрес, идентичные тем, которые создали сеанс.
- Естественно, все пользовательские вводы и ответы ajax проверяются перед запросом.