Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Format JSON, a bezpieczeństwo
Forum PHP.pl > Forum > PHP
ZaqU
Witam,

Ostatnio natrafiłem na dosyć nietypowy problem. Podczas przesyłania danych w formacie JSON z formularza do PHP, przed jakąkolwiek operacją na tych danych zawsze instynktownie używam htmlspecialchars() oraz mysql_real_escape_string(). Sęk w tym, że tak "zabezpieczone dane" z początkowej postaci:

Kod
[{"id":1600},{"id":857},{"id":376},{"id":1410},{"id":1434}]
na
Kod
[{"id":1600},{"id":857},{"id":376},{"id":1410},{"id":1434}]

nie są prawidłowym formatem JSON i nie można ich użyć w funkcji json_decode().

Co powinienem zrobić? Zamienić " z powrotem na cudzysłowia, czy może zmienić sposób filtrowania tych danych?
Turson
Używaj PDO i binduj dane, to nie będziesz musiał ich filtrować, wszystko może iść bezpośrednio.
Pyton_000
Nic nie rób, jeżeli z form przychodzi JSON to wsadź go w json_decodi obsługuj błędy.
Crozin
Cytat
[...] przed jakąkolwiek operacją na tych danych zawsze instynktownie używam htmlspecialchars() oraz mysql_real_escape_string()
Funkcji filtrujących nie używa się "instynktownie", a jedynie w tych miejscach w których są one niezbędne do prawidłowego/bezpiecznego działania programu. Ty w tej chwili nie zabezpieczasz niczego, a jedynie zaśmiecasz dane. Jeżeli nie rozumiesz w jakim celu stosuje się daną funkcję, zapytaj - na pewno ktoś poza odesłaniem do dokumentacji wyjaśni Ci "ogólny powód".
ZaqU
Crozin:
Miałem na myśli, że wszędzie tam, gdzie dane są przesyłane przez zapytania MySQL.

Dzięki za pomoc, spróbuję użyć json_last_error() i będę sprawdzał czy dane są poprawne.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.