[PYTHON] Gestion des chaînes de caractères dans la communication JSON

Manuel japonais dans la communication json

En raison des spécifications json, le japonais n'a pas besoin d'être un échappement unicode Si vous n'échappez pas à unicode, ce n'est pas bon pour les fuites de confidentialité, mais ce n'est pas bon car il peut être décodé s'il est décodé. Même dans ce cas, une sécurité telle que XSS est acceptable car vous pouvez échapper à la chaîne de caractères de contrôle avec la marque \ (→ Que voulez-vous dire?)

↓ C'est ce que tu veux dire. Scripts intersites

En enregistrant les données incluses dans l'étiquette de script, les données peuvent être lues comme une étiquette de script dans le navigateur et un script invalide peut être exécuté. La chaîne de contrôle doit donc être échappée.

Problème d'échappement Unicode japonais python

bibliothèque standard json

La japonaisisation peut être réalisée par json.dumps (str, ensure_ascii = False).

Si> ensure_ascii est true (valeur par défaut), la sortie garantit que tous les caractères non ASCII saisis sont échappés. Si ensure_ascii est faux, ces caractères seront imprimés tels quels.

Cependant, si l'implémentation ci-dessus est utilisée, la chaîne de caractères de contrôle ne sera pas échappée, ce qui crée une vulnérabilité.

MUST be escaped Spécifications JSON Code du caractère de contrôle

the characters MUST be escaped: ※quotation mark, reverse solidus, and the control characters (U+0000 through U+001F).

No. Chaîne
1. "(citation double)
2. (barre oblique inverse)
3. Nul
4. Début de cap
5. Début de TeXt (début du texte)
6. Fin de TeXt
7. Fin de transmission
8. Enquête (enquête)
9. ACKnowledge (réponse affirmative)
10. Cloche
11. Espace arrière
12. Tabulation horizontale
13. Saut de ligne
14. Tabulation verticale
15. Saut de page (saut de page)
16. Retour chariot
17. Décaler
18. Shift In
19. Sortie de liaison de données (extension de contrôle de transmission)
20. Contrôle de l'appareil 1
21. Contrôle de l'appareil 2
22. Contrôle de l'appareil 3
23. Contrôle de l'appareil 4
24. Reconnaissance négative
25. Inactif synchrone
26. Fin du bloc de transmission
27. Fin du bloc de transmission
28. Annuler
29. Fin du support
30. Remplacer
31. ESCape (étendu)
32. Séparateur de fichiers
33. Séparateur de groupe
34. Séparateur d'enregistrement
35. Séparateur d'unité

Recommended Posts

Gestion des chaînes de caractères dans la communication JSON
Construire un Sphinx qui peut être écrit avec Markdown
Algorithmes de base utilisables par les pros de la compétition
Enregistrement d'image ANT qui peut être utilisé en 5 minutes
Analyse morphologique et tfidf (avec code de test) pouvant être effectuée en 1 minute environ
[Django] À propos des utilisateurs pouvant être utilisés sur un modèle
Goroutine (contrôle parallèle) utilisable sur le terrain
Goroutine utilisable sur le terrain (édition errgroup.Group)
Scripts pouvant être utilisés lors de l'utilisation de Bottle en Python
Index d'évaluation pouvant être spécifié pour GridSearchCV de sklearn
Je l'ai fait parce que je veux des données JSON qui peuvent être utilisées librement dans les démos et les prototypes
À propos de psd-tools, une bibliothèque capable de traiter des fichiers psd en Python
Créez une Spinbox qui peut être affichée en binaire avec Tkinter
Un minuteur (ticker) qui peut être utilisé sur le terrain (peut être utilisé n'importe où)
Résumé de l'entrée standard de Python pouvant être utilisée dans Competition Pro
Créez une Spinbox pouvant être affichée dans HEX avec Tkinter
Confirmation que rkhunter peut être installé
Remplissage facile des données pouvant être utilisées dans le traitement du langage naturel
Résumé des problèmes d'AtCoder C qui peuvent être résolus en mathématiques au secondaire
Bot LINE sans serveur qui peut être réalisé en 2 heures (acquisition de l'identifiant source)
Nombre maximum de paramètres de fonction pouvant être définis dans chaque langue
Une histoire que heroku, qui peut se faire en 5 minutes, a en fait duré 3 jours