![]() |
![]() |
![]()
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? |
|
|
![]() |
![]()
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.
|
|
|
![]()
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.
|
|
|
![]()
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".
|
|
|
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 21:48 |