Подтвердить что ты не робот

Как Angular обрабатывает XSS или CSRF?

Как Angular (2) обрабатывает XSS и CSRF. Он даже справляется с этими атаками? Если так, что я должен сделать, чтобы использовать эту защиту? Если нет, нужно ли мне обрабатывать все эти атаки на моем сервере или каким-либо образом с помощью TypeScript во внешнем интерфейсе?

Я читал, что вы должны использовать "withCredentials: true", но я не совсем уверен, куда поместить этот код или, если это вообще так, то, что я ищу.

На веб-странице https://angular.io/ я ничего не нашел по этому поводу (или просто пропустил).

4b9b3361

Ответ 1

Angular2 обеспечивает встроенную защиту по умолчанию *, анти XSS и CSRF/XSRF.

DomSanitizationService заботится об удалении опасных битов, чтобы предотвратить атаку XSS.

Класс CookieXSRFStrategy (в классе XHRConnection) заботится о предотвращении атак CSRF/XSRF.

* Обратите внимание, что защита CSRF/XSRF включена по умолчанию на клиенте, но работает только в том случае, если бэкэнд устанавливает cookie с именем XSRF-TOKEN со случайным значением, когда пользователь аутентифицируется. Для получения дополнительной информации прочтите шаблон токена cookie-to-Header.

UPDATE: официальная Angular2 документация по безопасности: https://angular.io/docs/ts/latest/guide/security.html (спасибо Мартин Пробст за предложение по редактированию!).

Ответ 2

Для упомянутой серверной части в Angular CSRF вы можете обработать с помощью Express:

app.use(express.csrf())
app.use(function (req, res, next) {
  res.cookie('XSRF-TOKEN', req.session._csrf);
  res.locals.csrftoken = req.session._csrf;
  next();
})

Не уверен, что с новым HttpClientXsrfModule это все еще требуется. Может быть достаточно добавить только следующее (но необходимо подтвердить) на стороне клиента в app.module:

HttpClientXsrfModule.withOptions({
  cookieName: 'XSRF-TOKEN',
  headerName: 'X-XSRF-TOKEN'
})