V5.2.1 Sanitization and Sandboxing
Requirement:#
Verify that all untrusted HTML input from WYSIWYG editors or similar is properly sanitized with an HTML sanitizer library or framework feature. (C5)
Explanation:#
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Π΅ΡΡ Π½Π΅Π΄ΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΉ HTML-ΠΊΠΎΠ΄, ΠΈΠ· Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠ² (WYSIWYG), Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ΠΉΡΡΠ°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ°Π½ΠΈΡΠ°ΠΉΠ·Π΅ΡΠ° ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° HTML-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°.
Remediation:#
Π£ΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΎΡΠΈΡΡΠΊΠ΅ Π²ΡΠ΅Ρ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ HTML ΠΈΠ· ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠ² WYSIWYG ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ . ΠΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ°Π½ΠΈΡΠ°ΠΉΠ·Π΅ΡΠ° ΡΡΠ΅Π΄ΡΡΠ² HTML ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ°Π½ΠΈΡΠ°ΠΉΠ·Π΅ΡΠ° ΡΡΠ΅Π΄ΡΡΠ² HTML ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ ΡΠ΄Π°Π»ΠΈΡΡ Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΈΠ· Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ HTML, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π³ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΡ, ΠΎΠΏΠ°ΡΠ½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠ³ΡΠΎΠ·Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ DOMPurify Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ Π²Π²ΠΎΠ΄Π° HTML Π² JavaScript:
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ DOMPurify.sanitize ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ dirtyHTML. ΠΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ ΠΎΡΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ HTML, ΠΊΠΎΡΠΎΡΡΡ Π·Π°ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.