Czytam, że sprawdzenie nagłówka X żądania ajax jest dobrym sposobem, aby upewnić się, że żądanie nie pochodzi z zewnątrz. Po stronie serwera, jak mogę sprawdzić ten nagłówek? i jaki jest właściwy sposób reagowania na ten nagłówek, którego brakuje lub jest on nieprawidłowy (przekierowanie, odrzucenie wyjątku, inaczej)?W jaki sposób serwer może sprawdzać żądania ajaxowe nie z witryny, X-Requested-With
Odpowiedz
Można sprawdzić to w ten sposób ...
$isAjax = isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
Jeśli jesteś tylko spodziewa dostęp poprzez XHR, a potem po prostu exit
jeśli ten nagłówek nie jest obecny.
Uwaga: Ten nagłówek jest banalny do podszywania się. Nie polegaj na tym dla niczego poza wygląda na to, że pochodzi z XHR.
Chcę go użyć, aby upewnić się, że żądanie nie nadchodzi od kogoś, kto spojrzał na mój kod js, wziął adresy URL i przesyła dane wejściowe spoza mojej strony. Więc jeśli można to sfałszować, to nie ma sposobu, aby się przed tym uchronić? – zmol
@zmol Przepraszam, nie ma sposobu, aby po prostu znaleźć obecność tego nagłówka. – alex
, ale czy są inne sposoby? To nie musi być przez ten nagłówek. Ostatecznym celem jest upewnienie się, że prośba nie pochodzi od kogoś, kto czyta kod js, czyta linka URL ajax i odtwarza URL z zewnątrz :) – zmol
Jedyny pewny sposób na zapewnienie, że żądanie pochodzi z Twojej witryny, a nie od kogoś innego, to wydanie unikalnego tokena dla użytkownika i zapisanie go w sesji. W kodzie, w którym tworzysz żądanie AJAX, musisz przekazać token z powrotem i jeśli jest zgodny z tym w sesji, możesz mieć pewność, że żądanie pochodzi z Twojej witryny.
Więcej informacji: http://en.wikipedia.org/wiki/Cross-site_request_forgery
- 1. Jak prawidłowo odrzucać żądania ajaxowe
- 2. W jaki sposób serwer może przekazywać dane do klienta?
- 3. W jaki sposób serwer WWW może obsługiwać przychodzące żądania wielu użytkowników jednocześnie na jednym porcie (80)?
- 4. Czy wielowątkowe ASP.NET (w jaki sposób wykonuje żądania)?
- 5. W jaki sposób password_verify może sprawdzać hasła bez znajomości soli i kosztów?
- 6. Serwer programistyczny Django nie obsługuje żądania ajaxowego
- 7. Jaki jest najlepszy sposób generowania mapy witryny?
- 8. node.js ekspresowe sesje ajaxowe
- 9. Serwer SVN nie odpowiada na żądania zapisu
- 10. W jaki sposób ludzie sprawdzają swoje witryny w 2013 roku?
- 11. Czy istnieje sposób, w jaki serwer Git będzie obsługiwał żądania klientów svn?
- 12. W jaki sposób Node.js obsługuje jednoczesne żądania z jednym wątkiem?
- 13. Serwer gniazd PHP korzystający z ADH. W jaki sposób?
- 14. W jaki sposób Facebook uniemożliwia umieszczenie witryny w iFrame?
- 15. W jaki sposób XSUB Perla może umrzeć?
- 16. jest "ab" lub "httperf" lepiej sprawdzać wydajność witryny?
- 17. W jaki sposób nieinwestycyjnie zwracać `Może` obiektyw?
- 18. W jaki sposób przycisk może uzyskać ostrość?
- 19. W jaki sposób witryny takie jak Hubspot śledzą linki przychodzące?
- 20. W jaki sposób proces nadrzędny może wysłać obiekt gniazdo/serwer do procesu potomnego w pliku Node.js?
- 21. W jaki sposób Apache może powodować duplikowanie żądań?
- 22. W jaki sposób klasa singleton może korzystać z interfejsu?
- 23. Korzystając z D, w jaki sposób mogę odsłuchać przychodzące żądania HTTP i odpowiedzieć na nie?
- 24. W jaki sposób serwer WWW Pythona pokonuje GIL
- 25. W jaki sposób Docker może uruchamiać dystrybucje z różnymi jądrami?
- 26. W jaki sposób są przydzielane wątki do obsługi żądania Servlet?
- 27. W jaki sposób mogę zatrzymać osadzony serwer GUt?
- 28. Serwer SQL nie może wywoływać metod Data
- 29. Jak upewnić się, że żądania pochodzą z mojej witryny?
- 30. W jaki sposób szyny określają format przychodzącego żądania?
Możecie zajrzeć do http://stackoverflow.com/questions/623299/can-the-x-requested-with-http-header-be-spoofed; pokazuje, że 'X-Requested-With' może zostać sfałszowany. –
chcesz zobaczyć również http://www.yiiframework.com/forum/index.php?/topic/4945-yiiapp-request-isajaxrequest/ –