Member 13821689 Ответов: 1

Пожалуйста, помогите мне решить проблему с моей системой лицензирования!


Всем привет,

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

Я скоро добавлю клиентский код. Я также надеюсь добавить более продвинутые функции.

В основном,

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

2. Клиент отправляет имя пользователя и пароль (имя localhost:8080/логин/имя пользователя-пароль) в обработчик входа.

3. сервер хэширует пароль и сверяет его с локальным файлом со всеми хэшами, хранящимися локально на моем компьютере.

4. сервер будет отчитываться, если это удалось или не удалось.

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

Я ценю все предложения, даже если они не исправляют ошибку.

Спасибо!

Код: https://gist.github.com/seriousnerve/1830e77d3e2891b0a5b158c9fb02b37f

Что я уже пробовал:

Я попытался изменить операторы if then, но, похоже, они просто полностью пропускают оператор password if.

Richard Deeming

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

Member 13821689

Что вы мне посоветуете делать?

Richard Deeming

Найдите способ привязать хэш пароля к имени пользователя. JSON, XML, CSV - все, что лучше всего подходит для вас.

1 Ответов

Рейтинг:
1

Christian Graus

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

HashDecoded
является пустым или единственным символом, и таким образом
HashInfo
всегда содержит его.


Member 13821689

Есть ли у вас альтернатива использовать вместо strings.contain?

GKP1992

Как указал Кристиан Граус, вместо того чтобы проверять, содержит ли HashInfo HashDecoded, проверьте, равен ли HashInfo HashDecoded.

Member 13821689

Я не думаю, что ты понимаешь. HashInfo-это файл, содержащий несколько хэшей для разных пользователей. Он должен искать этот файл, чтобы проверить, есть ли там HashDecoded. Если только у вас нет другого способа хранить хэши. Пожалуйста, не говорите MySQL, потому что я ненавижу SQL-запросы в Go. Трудно отлаживать. Спасибо за предложения!