W moim projekcie używam „uciec” jako strategia wartości Sanitize. I używam dyrektywy translate (atrybut) w pewnym miejscu. Niektóre inne miejsca, w których używam filtra tłumaczenia.XSS w kątowym Przekłada dyrektywę
Z dyrektywy:
<span translate="{{vm.text}}"><span>
To vulnarable do XSS. Jeśli wartość vm.text
to <script>alert()</script>
, to skrypt jest wykonywany i wyświetlane jest okno podręczne.
z filtrem:
<span>{{vm.text | translate}}<span>
Wartość vm.text
jest uciekł i html jest pokazany jako <script>alert()</script>
W kątowym przełożenia dokumentacji (https://angular-translate.github.io/docs/#/guide/19_security) one zalecamy skorzystanie „ucieczkę” jako wartość zdezynfekować strategia mówi: "Obecnie występuje problem z trybem odkażania, spowoduje on podwójne kodowanie znaków UTF-8 lub znaków specjalnych. Zalecenie: użyj strategii "escape", dopóki nie zostanie rozwiązana ".
Czy istnieje właściwy sposób, aby pokazać HTML jako <script>alert()</script>
bez wykonywania go?
znalazłem przy użyciu filtra ucieka poprawnie, ale nie uniknie tego rodzaju ataku: #/Korzystanie z dyrektywy będzie prawidłowo uciec {{{} „)));; alert (1) //”}.} ten rodzaj ataku, ale potem kończy się niepowodzeniem podczas ataku skryptów, który zilustrowałeś. Dla mnie jest to wielka dziura w bibliotece tłumaczeń. – Gurnard