# Improper Handling of Unicode Encoding (CWE-176) The product does not properly handle when an input contains Unicode encoding. **Stack:** Go - Prevalence: Media 3 lenguajes cubiertos - Impact: Medio Se recomienda revisión - Prevention: Documentada 3 ejemplos de corrección **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 Estrategias de prevención para Improper Handling of Unicode basadas en 1 reglas de detección de Shoulder. ### Go Normalize strings with NFKC before security-sensitive comparisons ## Consequences - Eludir mecanismo de protección - Ejecutar código no autorizado ## Mitigations - Normaliza la entrada Unicode a una forma canónica antes de procesarla - Aplica las comprobaciones de seguridad después de la normalización Unicode - Usa funciones de comparación que tengan en cuenta 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