-
Notifications
You must be signed in to change notification settings - Fork 11
Description
V aplikácii SSSP031 aka "Nastavenia pre mobilné aplikácie" je tlačidlo "Vygeneruj", ktoré používateľovi vygeneruje prihlasovací kód, a tlačidlo ktoré ten kód zmaže. Užívateľom, ktorí majú vygenerovaný kód, nevie Votr otvoriť SSSP031. (Normálne ju neotvárame, chyba bola objavená pri pokuse automaticky otvoriť každú aplikáciu.)
Dôvod je, že v dialógu je HtmlArea kde sa AIS pokúša zobraziť QR kód (čo sa mu aj tak nepodarí, lebo volá funkciu comfac.getComponent ktorá už neexistuje). Obsah tejto HtmlArea je uložený ako script type="text/plain". Lenže v tomto prípade obsahuje ďalší script. Zjednodušený príklad:
<html>
<body>
<script type="text/plain"><!--
<html><body>Aaa<script>alert(123)</script>Bbb</body></html>
--></script>
Ccc
<script>alert(456)</script>
Ddd
</body>
</html>
Prehliadače to zvládnu - dokument bude mať dva script tagy, pričom ten prvý obsahuje textové podreťazce <script>
a </script>
. Ale lxml si s tým nevie poradiť a časť vstupu zahodí:
>>> from bs4 import BeautifulSoup
>>> BeautifulSoup(c, 'lxml')
<html>
<body>
<script type="text/plain"><!--
<html><body>Aaa<script>alert(123)</script>Bbb</body></html><html><p>
--></p></html>
Nie je to prvý raz, čo mi lxml robí zle (#132) ale neviem či chceme prejsť na nejaký iný parser keď jedine lxml má prebuilt binaries.