Как скрыть заголовки авторизации, используя Spring boot и приложение Angular - PullRequest
3 голосов
/ 12 февраля 2020

Я реализовал аутентификацию JWT с использованием безопасности Spring. Поскольку заголовок авторизации виден в браузере, злоумышленник может манипулировать данными, используя токен, который присутствует в заголовке авторизации. Есть ли способ ограничить это. Я использую Spring boot и Angular 8. Любая помощь приветствуется.

Пример работы с данными enter image description here

enter image description here

enter image description here

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

В принципе, вы никогда не можете доверять клиенту. Вам приходится иметь дело с манипулированными данными.

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

На высоком уровне существует множество решений для такого рода проблем.

1) Для меня это типичное не обновляемое поле, потому что тот, кто создал что-то, никогда не меняется.

1a) в JPA столбец может быть помечен updatable=false, поэтому это всегда будет игнорироваться для операции слияния.

1b) другой вариант - сначала загрузить элемент из памяти и использовать только атрибуты из запроса, который вы разрешаете сохранить для этого бизнес-случая, скопируйте допустимые значения в загруженный элемент и объедините загруженный элемент с базой данных.

2.) в других случаях, например, для обновляемого поля, вам необходимо перепроверить, соответствует ли аутентифицированный пользователь обновлен по идентификатору. если не выдвигать исключение / 401, что угодно.

3.) Думаю, это больше подходит к вашему решению. Я также предлагаю не переносить все данные, которые хранятся для элемента, лучше использовать Transfer Object или Use Case Objects. Используя объекты переноса или объекты прецедента, он фактически скрывает данные, потому что вы переносите только выделенные данные. Это также рекомендация по безопасности, потому что некоторые данные вы просто не хотите никому показывать, поэтому, если вы прячете их на стороне клиента, но если они уже отправлены клиенту, опытный пользователь всегда может сделать данные видимыми при проверке или манипуляция. Только представьте, что вы отправляете информацию о зарплате о человеке каждый раз, когда отображаете человека ... Широко используемым решением для сопоставления объектов данных для передачи объектов и обратно является библиотека mapstruct.

Надеюсь, это поможет найти хорошее решение .

0 голосов
/ 12 февраля 2020

Нет способа скрыть информацию из браузера. Это связь клиент-сервер, поэтому пользователь всегда может исследовать содержимое страницы HTML, заголовки Http или параметр запроса, используя инструменты разработчика.

Для защиты вашего общения используется Https (поэтому содержимое, включая заголовки, шифруется), а также использование кратковременного оставления токена JWT (с использованием даты истечения срока действия и токена refre sh) так что злоумышленнику труднее выдать себя за кого-либо.

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