Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Format JSON, a bezpieczeństwo
ZaqU
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 21.01.2013

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Używaj PDO i binduj dane, to nie będziesz musiał ich filtrować, wszystko może iść bezpośrednio.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Nic nie rób, jeżeli z form przychodzi JSON to wsadź go w json_decodi obsługuj błędy.
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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".
Go to the top of the page
+Quote Post
ZaqU
post
Post #5





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 21.01.2013

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 21:48