2010-11-15 13 views
5

Rozważmy następny scenariusz: załóżmy, że mam aplikację internetową i uwierzytelnianie użytkowników odbywa się za pośrednictwem modalnego okna dialogowego (powiedzmy, że gdy użytkownik kliknie przycisk logowania, zapytanie ajax jest wysyłane i w zależności od wywołania zwrotnego zamykam okno lub wyświetlać błąd) i korzystam z protokołu tylko HTTP. Dlaczego uważa się, że nie jest to bezpieczny sposób robienia rzeczy?Dlaczego uwierzytelnianie AJAX za pośrednictwem protokołu HTTP jest uważane za niezabezpieczone?

Upewnij się również, że modalne okno dialogowe jest brane pod uwagę, ponieważ jest to niezbędne. Niektóre dane mogą być wyświetlane pod oknem dialogowym i mogą być dostępne w przypadku awarii modalności.

Pytanie obejmuje zarówno:

  1. Jak można złamać zabezpieczenia aplikacji z wykorzystaniem połączenia przez ajax?
  2. Czy HTTP Ajax jest mniej bezpieczny niż zwykły formularz HTTP od ?
+1

Kto uważa, że ​​nie jest to bezpieczne? lub Kto uznał to za ** mniej bezpieczne ** niż zwykłe formularze? – zerkms

+0

To jest właściwie pytanie, dlaczego, nie kto. W porównaniu z HTTPS nie ma wątpliwości, że jest to niebezpieczne. To, co chcę wiedzieć, to dlaczego. –

+0

Czy możesz wyjaśnić pytanie? Czy pytasz, czy HTTP Ajax jest mniej bezpieczny niż Ajax HTTPS? lub Czy pytasz, czy HTTP Ajax jest mniej bezpieczny niż zwykły formularz HTTP? – UpTheCreek

Odpowiedz

10

Ktokolwiek ci powiedział - jest w błędzie. The ajax przez pocztę nie jest mniej bezpieczny niż post z regularnymi formularzami. Tylko dlatego, że jest to to samo, co.

Update 1 według ostatniego EDIT:

  1. Nie można
  2. Nie

Argument: żądanie AJAX jest takie samo żądanie HTTP, jak każdy inny (takie jak żądanie wysłane przez formularz html). Absolutnie ten sam. Z definicji nie może być mniej lub bardziej bezpieczny.

Nie wiem, jak wyjaśnić więcej i co powiedzieć jeszcze: ajax jest żądaniem http. to samo żądanie, co twoja przeglądarka, kiedy otwierasz stronę SO lub publikujesz formularz pytania SO.

Mogę przeformułować twoje pytanie na "Dlaczego A jest mniej bezpieczne niż A". Odpowiedź na to: A nie jest mniej bezpieczny niż A, ponieważ A jest A: -S

+0

Czy możesz podać jakieś argumenty oprócz swoich odpowiedzi? –

+1

@ den-javamaniac: próbowałem ;-) – zerkms

+0

@zerkms: Tak, dziękuję za to, ponieważ wyraźnie widzę twój punkt widzenia. Ale pomysł, którego nie otrzymuję, jest następny: podczas gdy w prostym formularzu uwierzytelnianie po naciśnięciu przycisku logowania jest wysyłane żądanie i to wszystko, jeśli używasz okna dialogowego, jest łańcuch wywołań js (nie jestem jednak ekspertem js) , który, powiedzmy, że js jest dołączony do dolnej części strony, może być po prostu zmieniony i spowodować cokolwiek, co pozwoli ci zrobić. Jeśli uda mi się to osiągnąć, mogę łatwo wysłać dwie prośby - 1, aby się zalogować, i drugą, aby uzyskać dane uwierzytelniające. Co (jeśli to możliwe)? –

1

HTTP nie jest bezpieczny dla prywatnych danych, ponieważ dane są przesyłane w postaci zwykłego tekstu. Można go przechwycić w dowolnym miejscu między klientem a serwerem (np. Wifi). Ajax przez HTTPS byłby znacznie lepszy.

+0

Ale nie pytasz, dlaczego ajax sprawiłby, że byłby mniej bezpieczny? – UpTheCreek

2

Wszelkie poufne dane powinny być przekazywane za pośrednictwem protokołu HTTPS. Dane GET są wysyłane w querystringu. Dane POST są wysyłane w nagłówku żądania HTTP. Ajax może robić jedno i drugie. ZARÓWNO nie są bezpieczne. Aby go naprawdę zabezpieczyć, potrzebujesz szyfrowania na poziomie kanału.

0

Ponieważ przeglądarki używają tego samego stosu sieciowego dla HTTP i HTTPS, czy to AJAX, czy nie, nie ma różnicy. Wszystkie nagłówki, pliki cookie, uwierzytelnianie itp. Działają dokładnie tak samo.

1

Myślę, że problem polega na tym, że używasz http. Bez względu na to, jak na to spojrzysz, nie będzie to bezpieczne. Jeśli używasz https, zapytanie ajax będzie tak samo bezpieczne jak formularz HTML.

Odpowiedź Somy polegałaby na użyciu https, a wszystko będzie gotowe.

Powiązane problemy