Это потому, что атрибут id небезопасен.
Это не мой ответ, но он ответит на ваш вопрос: https://security.stackexchange.com/questions/88973/why-do-id-attributes-need-stricter-validation
Для id
и name
эти атрибуты часто используются в качестве опорных точек в DOM.
Если злоумышленник может обмануть эти контрольные точки, она сможет обмануть существующие сценарии в получении и установить значения из других мест, кроме тех, которые были разработаны, что может быть опасным в зависимости от используемого контекста..
Примечание от меня: Остальные его пост говорит о имени атрибута, но вы получите идею, стоящую за всем этим, если вы еще не на то, что выше
Это также применяется к форматам HTML, где name
используется для идентификации пары имя/значение. Например, если веб-сайт не кодирует конкретное поле формы при его выводе, но так как поле формы генерируется сервером и форма защищена от CSRF с помощью токенов, он не может быть использован обычными средствами. Однако злоумышленник может заставить пользователя посетить URL-адрес с параметром, который используется в name
, содержащий полезную нагрузку XSS для выполнения при отправке формы.
например.Нормальное использование:
https://example.com/product?item_name=watch&qty=1
, который оказывает форму
<form>
<input type="hidden" name="watch" value="1" />
<input type="hidden" name="shop_name" value="Bob's Supplies" />
<input type="hidden" name="anti-csrf" value="asdjasodhoai" />
<input type="submit" value="Click here to buy" />
</form>
А затем получает выход в
Thank you for buying from Bob's Supplies.
Однако злоумышленник может отправить ссылку на пользователя следующим образом:
https://example.com/product?item_name=shop_name&qty=<script>alert('xss')</script>
Поскольку приложение правильно кодирование HTML в этот момент он делает вид, как
<form>
<input type="hidden" name="shop_name" value="<script>alert('xss')</script>" />
<input type="hidden" name="shop_name" value="Bob's Supplies" />
<input type="hidden" name="anti-csrf" value="asdjasodhoai" />
<input type="submit" value="Click here to buy" />
</form>
Это затем получает выходной как
Thank you for buying from <script>alert('xss')</script>.
, поскольку эта страница не HTML кодирует параметр shop_name
, поскольку он является доверенным и фреймворк всегда берет первое значение в случае дубликатов. Очень надуманный, но это было первое, что упало мне в голову, чтобы продемонстрировать суть.
вместе с ответом от Карла из этого вопроса: http://stackoverflow.com/ вопросы/39007130/the-pipe-can-not-be-found-angular2-custom-pipe хорошее исправление для этой проблемы с Sanitizer – sanyooh
@sanyooh Это хорошо работает в санации, но я получаю 'undefined', отображаемый momenteraly перед моим' [ innerHTML] 'содержимое отображается. '
' – fidevSafeHtml? где он должен быть импортирован из –