# Improper Handling of Unicode Encoding (CWE-176) The product does not properly handle when an input contains Unicode encoding. **Stack:** Go - Prevalence: Średnia Pokryto 3 języków - Impact: Średni Zalecany przegląd - Prevention: Udokumentowane 3 przykładów poprawek **OWASP:** Injection (A03:2021-Injection) - #3 ## Description Unicode characters can have multiple encodings or representations. If an application does not properly handle Unicode, attackers may be able to bypass security filters or cause unexpected behavior using alternate encodings. ## Prevention Strategie zapobiegania dla Improper Handling of Unicode oparte na 1 regułach detekcji Shoulder. ### Go Normalize strings with NFKC before security-sensitive comparisons ## Consequences - Obejście mechanizmu ochrony - Wykonanie nieautoryzowanego kodu ## Mitigations - Normalizuj dane wejściowe Unicode do postaci kanonicznej przed przetwarzaniem - Kontrole bezpieczeństwa stosuj po normalizacji Unicode - Stosuj funkcje porównujące świadome Unicode ## Detection - Total rules: 3 - Languages: go, javascript, typescript, python ## Rules by Language ### Go (1 rules) - **Unicode Normalization Security Issues** [MEDIUM]: Security-sensitive string comparison without Unicode normalization. - Remediation: Normalize strings with NFKC before security-sensitive comparisons. ```go import "golang.org/x/text/unicode/norm" func isAdmin(username string) bool { normalized := norm.NFKC.String(strings.ToLower(username)) return normalized == "admin" } ``` Learn more: https://shoulder.dev/learn/go/cwe-176/unicode-normalization