Niedawno trafiłem na błąd z powodu jakości danych z obsługą przeglądarki i szukam bezpiecznej reguły dla stosowania ucieczki ciągu bez podwójnego rozmiaru, chyba że jest to wymagane.Lista znaków Unicode, które powinny być filtrowane na wyjściu?
Sekwencja bajtów UTF-8 "E2-80-A8" (U + 2028, SEPARATOR LINIOWY), doskonale działająca postać w bazie danych Unicode. Jednak ta sekwencja reprezentuje separator liniowy (Tak, inny niż "0A").
Niestety, wiele przeglądarek (w tym Chrome, Firefox i Safari, nie przetestowałem innych), nie udało się przetworzyć wywołania zwrotnego JSONP, które zawiera ciąg znaków, który zawiera znak Unicode. JSONP został dołączony przez kod HTML inny niż Unicode, którego nie miałem żadnej kontroli.
Przeglądarki po prostu zgłosiły NIEPRAWIDŁOWY KOD/błąd składni na takim kodzie JavaScript, który wygląda poprawnie na narzędziach do debugowania i wszystkich edytorach tekstu. Sądzę, że może spróbować przekonwertować "E2-80-A8" na BIG-5 i złamać składnię JS.
Powyższe jest tylko przykładem tego, w jaki sposób Unicode może spowodować nieoczekiwane złamanie systemu. O ile wiem, niektórzy hakerzy mogą używać RTL i innych znaków kontrolnych dla ich dobra. I jest wiele "cytatów", "spacji", "symboli" i "kontroli" w specyfikacji Unicode.
PYTANIE:
Czy istnieje lista znaków Unicode za każdy programista wiedzieć o ukrytych funkcji (i błędów), które nie chcą im skuteczne w naszej aplikacji. (na przykład Windows wyłącza RTL w nazwie pliku).
EDIT:
Nie pytam dla JSON ani JavaScript. Proszę o ogólną najlepszą praktykę przekazywania Unicode we wszystkich programach.
Od JSON jest ogólnym formatu serializacji dla Unicode, ** ** nic nie musi być filtrowane lub złamać współdziałanie. Kiedy przeglądarki błędnie interpretują JSON, którego kodowanie wyraźnie jest UTF-8, jako inne kodowanie, wina leży po stronie przeglądarek; i * one * powinny być naprawione. Gimping JSON nie jest rozwiązaniem. – daxim