2011-12-03 3 views
9

Piszę głównie aplikację ajaxową i szukam sposobu ochrony użytkownika przed atakami CSRF. Planuję uruchomić strony aplikacji, w której zalogowany jest użytkownik, aby wykonywać pracę w trybie HTTPS.Czy protokół HTTPS chroni przed atakami CSRF?

Czy uruchomienie strony w protokole HTTPS ma na celu ochronę przed atakami CSRF?

+1

To Zapytanie CSRF (Cross-Site Fałszerstwo) nie CSRF – CodesInChaos

+0

@CodeInChaos: Ok, dzięki za edycji – frenchie

+0

Pamiętaj, aby [start z odrobiną badań] (http://en.wikipedia.org/wiki/Cross-site_request_forgery) co do przyczyny wspomnianej luki. –

Odpowiedz

16

Nie, uruchomienie strony w HTTPS nie chroni jej przed CSRF. Fakt, że komunikacja między przeglądarką a serwerem jest szyfrowana, nie ma wpływu na CSRF.

Proponuję przeczytać wskazówki OWASP na temat preventing CSRF.

+0

Dobra, dziękuję Oded za odpowiedź. – frenchie

+0

Jakie są Twoje zalecenia dotyczące zabezpieczenia transakcji ajaxowych? Składanie formularzy wydaje się być dobrze udokumentowane, ale ajax znacznie mniej. – frenchie

+0

@frenchie - Prawie wszystko, co dotyczy przesyłania formularzy dotyczy ajax, a także XSS. – Oded

2

Ogólny, złota zasada woule być:

Nigdy nie ufaj, że przychodzące żądanie klienta jest zasadny. Bądź zawsze podejrzliwy i zakładaj, że żądanie może zostać złośliwie sfałszowane.

kilku konkretnych zasad poza wspomnianym artykule OWASP:

  1. jeśli dane wymaga uwierzytelniania/autoryzacji, unikać rodzajowe interfejsów na serwerze, jak interfejsu CRUD. łatwe do kodowania, trudne do autoryzacji konkretnych wniosków od klientów. zamiast tego zaoferuj interfejs w stylu SOA z jawnymi metodami dedykowanymi do konkretnych przypadków użycia, w których będziesz mieć bezpośrednią kontrolę nad żądaniami i ich parametrami.

    http://msdn.microsoft.com/en-us/library/ms954638.aspx

  2. nawet jeśli ramy zapewnia pewną kontrolę nad ważności żądania (ASP.NET viewstate), ponownie sprawdzić, czy użytkownik jest uprawniony do przekazania zestawu parametrów przychodzących.

+0

Stan widoku? Moja prośba przechodzi na stronę z $ .ajax, więc nie mogę wykorzystać danych z widoku stanu do odświeżenia strony. – frenchie

+0

To był tylko przykład konkretnego mechanizmu sprawdzania poprawności. –