Okazuje się następujących składników, które wygląda jak ważny javascript, nie jest:Jaki jest poprawny sposób kodowania wbudowanego obiektu javascript, aby chronić go przed XSS?
<html>
<body>
<script>
json = {test: "</script><script>alert('hello');</script>"};
</script>
</body>
</html>
Ten sam tekst, kiedy wrócił JSON za pośrednictwem ajax api działa tak jak oczekiwano. Jednak po renderowaniu w trybie bezpośrednim powoduje to podstawowe problemy z XSS.
Biorąc pod uwagę arbitralny poprawny ciąg JSON, co muszę zrobić po stronie serwera, aby zapewnić bezpieczne renderowanie w linii?
EDIT Idealnie chciałbym poprawkę do pracy z następującym ciągiem, a także:
json = {test: "<\/script><script>alert('hello');<\/script>"};
znaczenia, nie mam pojęcia, jak mój bazowy biblioteka kodujący /
char, może wybrałeś kodowanie lub nie. (Tak jego prawdopodobnie poprawka regex jest bardziej wytrzymałe)
Zasadniczo, jeśli chcesz renderować ją w linii, upewnij się, że nie zawiera ona sekwencji znaków ''. –
lub Chyba ... martwię się wydajnością z prostą korekcją ciągów, a także, że mogą istnieć inne dziwne problemy, których nie jestem świadomy. –
O ile nie dzieje się coś dziwnego, ukryta biblioteka nie wymyka się z ukośnika . Nie ma specjalnego znaczenia w łańcuchu Javacript, więc nie ma powodu, aby z niego uciekać. – Guffa