Политика безопасности содержимого для навигационных ссылок

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

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

Итак, я предоставил им CSP в качестве метатега, добавив его в index.html. Тем не менее, они хотят это в качестве заголовка ответа.

Теперь мои вопросы

1: насколько важно иметь CSP на страницах, которые не загружаются из-за взаимодействия с серверной частью?

2: каковы наилучшие способы добиться этого?

3: и поскольку наша команда по кибербезопасности непреклонна, как я могу добавить CSP в заголовок ответа на таких страницах?

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Отвечая на ваши вопросы по порядку:

  1. По-прежнему можно найти XXS на странице, которая не взаимодействует с серверной частью. Например, если злоумышленник может выполнить произвольный JavaScript на вашей странице входа, он теоретически может использовать это для кражи паролей ваших пользователей. CSP может смягчить эти атаки и поэтому должен использоваться здесь.

  2. Вы имеете в виду метатег CSP или заголовок? Если это так, я бы предпочел, чтобы они были в заголовке. Если злоумышленник каким-то образом сможет загрузить HTML-документ и он будет обслужен, теоретически он сможет обойти CSP.

  3. Это зависит от вашего веб-сервера. Если вы используете Spring Boot для обслуживания файлов внешнего интерфейса, вы можете включить его с помощью Spring Security, как описано в docs:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            // ...
            .headers(headers -> headers
                .contentSecurityPolicy(csp -> csp
                    .policyDirectives("script-src 'self' https://trustedscripts.example.com; object-src https://trustedplugins.example.com; report-uri /csp-report-endpoint/")
                )
            );
        return http.build();
    }
}

Другие веб-серверы имеют другую конфигурацию для этого, популярные из них — apache или nginx. По моему опыту, обычно есть веб-сервер, отличный от весенней загрузки, который обслуживает файлы внешнего интерфейса. Если вы обслуживаете только JSON REST-API поверх весенней загрузки, на самом деле нет необходимости устанавливать CSP при весенней загрузке.

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

user1168880 29.11.2022 21:47

Как внешние страницы подаются в браузер? У вас есть отдельный веб-сервер?

Garuno 30.11.2022 11:33

Внешний интерфейс angular работает на собственном сервере на порту 4200. Он взаимодействует с бэкэндом через apis, который является весенней загрузкой на порту 8080. Таким образом, они взаимодействуют как междоменные.

user1168880 30.11.2022 20:53

Хорошо, на каком веб-сервере размещено ваше угловое приложение? Порт 4200 похож на угловой порт dev-сервера. Ваше угловое приложение работает на производственной установке dev-сервера?

Garuno 30.11.2022 21:35

Кстати, другими популярными вариантами будут nginx или apache.

Garuno 30.11.2022 22:06

Ваш вопрос заставил меня задуматься, и я поговорил с оперативной группой. Они используют веб-сервер Apache. На локальном веб-пакете встроен угловой. Это дало мне подсказку, что я могу добавить заголовок ответа на сам веб-сервер apache, верно?

user1168880 01.12.2022 11:33

Да, вам нужно добавить заголовок ответа на веб-сервере Apache!

Garuno 01.12.2022 17:22

Спасибо за вашу поддержку. Я принял это как ответ. Я прошу вас также добавить вышеуказанную часть, чтобы она была полезна для таких, как я.

user1168880 01.12.2022 21:03

Другие вопросы по теме