Как Angular обрабатывает XSS или CSRF?
Как Angular (2) обрабатывает XSS и CSRF. Он даже справляется с этими атаками?
Если так, что я должен сделать, чтобы использовать эту защиту? Если нет, нужно ли мне обрабатывать все эти атаки на моем сервере или каким-либо образом с помощью TypeScript во внешнем интерфейсе?
Я читал, что вы должны использовать "withCredentials: true
", но я не совсем уверен, куда поместить этот код или, если это вообще так, то, что я ищу.
На веб-странице https://angular.io/ я ничего не нашел по этому поводу (или просто пропустил).
Ответы
Ответ 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'
})