Это довольно широкий ответ.
Но это зависит от того, как вы проверяете своих пользователей. Если вы создали свой собственный безопасный логин, вам следует остановиться сейчас. Даже если вы шифруете, кодируете и защищаете свои пароли, для начинающего пользователя существует множество уязвимостей, и существует множество библиотек и программного обеспечения, которые поддерживаются большими и активными (с открытым исходным кодом / свободными программами) сообществами, которые исправляют старые, новые и распространенные недостатки безопасности.
Пока я не использую Spring, я думаю, что у него есть собственные библиотеки для проверки пользователей, я могу ошибаться.
Также вы можете использовать что-то вроде Keycloak. Который я рекомендую всем. Это легко реализовать и документация хороша.
Вы должны прочитать это
https://auth0.com/blog/angularjs-authentication-with-cookies-vs-token/
и это
https://auth0.com/blog/cookies-vs-tokens-definitive-guide/
Идея состоит в том, чтобы ваш сервер мог узнать, зарегистрирован ли ваш пользователь без отправки пароля каждый раз.
В самом упрощенном виде, когда вы входите в систему с помощью файлов cookie сессий, вы делаете то, что вы создаете cookie на стороне браузера / клиента и сеанс на стороне сервера, у которого есть переменная, для которой они его используют. сравнить, если пользователь вошел в систему или нет. И сервер знает, что сеансы принадлежат пользователю. Это похоже на токены, после входа в систему вы получаете токен, и когда вы отправляете запрос обратно, вы можете отправить свой токен, и именно так сервер узнает, что вы вошли в систему. Сервер знает, что токен принадлежит пользователю.
Сказать, что отправка зашифрованного пароля в методе post или get - это действительно плохая идея. Если вы отправляете и кодируете пароль в методе get
например
http://myserver.com/user/myuser?password="#4$%encodedeapassword&/%EFDASF"
Тогда вы, вероятно, получите этот зашифрованный пароль и декодированный на вашем сервере.
Если я рассматриваю это как хакер, я могу сказать, что мне не нужен ваш пароль для входа в систему. Мне просто нужен ваш URL, я думаю, что если кто-то просто просматривает историю вашего браузера, может войти в систему.
Итак, вы не делитесь своим компьютером со всеми. Ну, тогда кто-то со сниффером может увидеть этот адрес и может войти в систему, или системный администратор, просто просматривающий прокси-соединения, или ваш провайдер знает ваш логин.
Если вы используете метод Post вместо метода GET, вы делаете его немного более безопасным, но любопытный системный администратор или кто-то с прокси-сервером будет знать ваш хэш.
В этом случае знание вашего хеша равнозначно знанию вашего пароля.
Идея использования сеансов или токенов заключается в том, что срок их действия истекает, и вы можете указать серверу уничтожить сеансы или токены.
Так, например, я захожу в компьютер на работе, получаю токен, а затем ухожу, а спустя несколько часов я иду домой и захожу со своего компьютера. Обычно токены имеют дату истечения срока действия, поэтому, если кто-то заходит на мой компьютер на работе, он или она не сможет войти в систему, если срок их действия истек.
И вы можете запросить у сервера уничтожить все живые токены и снова заставить пользователя войти в журнал. И только пользователь, который знает пароль, может войти снова.
В вашем случае, как только вы войдете в систему, вы можете указать в своем файле web.xml (есть и другие способы), что конечная точка / пользователь / * должна быть защищена, поэтому ее может видеть только зарегистрированный пользователь.
Так что теперь только зарегистрированные пользователи могут видеть эту конечную точку. Если вы хотите, чтобы только администраторы видели, что в зависимости от платформы у вас есть обозначения, такие как @RolesAllowed ()
И последнее, если вы хотите, чтобы пользователь мог видеть только его / ее информацию, с данным токеном вы запрашиваете информацию о пользователе, и таким образом вы узнаете, что user123 запрашивает информацию о user123, если имена пользователей не совпадают с отправляемым вами. и ошибка.
Кроме того, в примечании вы должны использовать ssl при входе в систему для повышения безопасности.