Porady dotyczące bezpieczeństwa dla jQuery ajax data post?

Używam jQuery ajax do wysyłania aktualizacji z powrotem do mojego serwera. Martwię się o upewnienie się, że wprowadziłem odpowiednie środki, aby tylko moje połączenia AJAX mogły publikować dane.

Mój stos to PHP na Apache przeciwko backendowi MySQL.

Porady bardzo mile widziane!

Author: brabster, 2008-09-02

2 answers

Każde żądanie wywołania AJAX na twoich stronach może być również wykonane przez kogoś spoza aplikacji. Jeśli zrobione dobrze, nie będzie w stanie powiedzieć, czy zostały one wykonane w ramach połączenia AJAX z webapp lub ręcznie/w inny sposób.

Istnieją dwa scenariusze, o których możesz mówić, gdy mówisz, że chcesz się upewnić, że tylko połączenia AJAX mogą publikować dane: albo nie chcesz, aby złośliwy użytkownik mógł publikować dane, które zakłócają inny dane użytkownika lub faktycznie chcesz ograniczyć posty do bycia w" przepływie " operacji wielu żądań.

Jeśli chodzi o pierwszy przypadek (ktoś zamieszcza złośliwe dane do / jako innego użytkownika) rozwiązanie jest takie samo, czy używasz AJAX czy nie-po prostu trzeba uwierzytelnić użytkownika za pomocą wszelkich niezbędnych środków-zwykle za pomocą pliku cookie sesji.

Jeśli chodzi o drugi przypadek, to będziesz musiał zrobić coś takiego jak wydanie unikalnego token na każdym etapie procesu i przechowywać oczekiwany token po stronie serwera. Następnie po złożeniu żądania sprawdź, czy po stronie serwera znajduje się odpowiedni wpis dla podejmowanej akcji i czy oczekiwane tokeny są zgodne i czy token ten nie został jeszcze użyty. Jeśli nie ma, odrzucasz żądanie, jeśli istnieje, oznaczasz ten token jako użyty i przetwarzasz żądanie.

Jeśli chodzi o coś innego niż jeden z tych dwóch scenariuszy, to odpowiedź będzie zależeć od Więcej Szczegółów Niż podałeś.

 28
Author: John,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-01 21:16:52

Użyj sesji, aby upewnić się, że wszelkie posty Ajax są wykonywane w uwierzytelnionym kontekście. Pomyśl o swoim kodzie Ajax jako o kolejnym kliencie na serwerze, łatwiej jest rozwiązać problemy z uwierzytelnianiem w ten sposób.

 5
Author: conmulligan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-01 21:15:59