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!
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ś.
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.
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