Krzysztof Kempiński

Krzysztof Kempiński Ruby on Rails / iOS
/ Elixir

Temat: AJAX a bezpieczeństwo

Niekiedy mówi się o "technologii" AJAX w kontekście zagrożenia bezpieczeństwa strony, głównie ponieważ user końcowy ma dostęp do javascriptowego kodu.

Chciałbym poznać Wasze zdanie na ten temat, oraz pomysły na unikanie luk.

konto usunięte

Temat: AJAX a bezpieczeństwo

Krzysztof K.:
Niekiedy mówi się o "technologii" AJAX w kontekście zagrożenia bezpieczeństwa strony, głównie ponieważ user końcowy ma dostęp do javascriptowego kodu.

Chciałbym poznać Wasze zdanie na ten temat, oraz pomysły na unikanie luk.

Też o tym myślałem. Przecież user może zobaczyć jaki plik php wykonuje zapytania GET, więcej, widzi jakie zapytania są wykonywane...

konto usunięte

Temat: AJAX a bezpieczeństwo

Andrzej D.:
Krzysztof K.:
Niekiedy mówi się o "technologii" AJAX w kontekście zagrożenia bezpieczeństwa strony, głównie ponieważ user końcowy ma dostęp do javascriptowego kodu.

Chciałbym poznać Wasze zdanie na ten temat, oraz pomysły na unikanie luk.

Też o tym myślałem. Przecież user może zobaczyć jaki plik php wykonuje zapytania GET, więcej, widzi jakie zapytania są wykonywane...

Jeżeli zmienne są dobrze filtrowane nic się nie powinno wydarzyć
Jakub L.

Jakub L. Programista

Temat: AJAX a bezpieczeństwo

Andrzej D.:

Też o tym myślałem. Przecież user może zobaczyć jaki plik php wykonuje zapytania GET, więcej, widzi jakie zapytania są wykonywane...

Zwykłe formy też mają target, i user też widzi, jaki.
Co rozumiesz przez 'widzi jakie zapytania są wykonywane'?

konto usunięte

Temat: AJAX a bezpieczeństwo

Jakub L.:
Andrzej D.:

Też o tym myślałem. Przecież user może zobaczyć jaki plik php wykonuje zapytania GET, więcej, widzi jakie zapytania są wykonywane...

Zwykłe formy też mają target, i user też widzi, jaki.
Co rozumiesz przez 'widzi jakie zapytania są wykonywane'?

Na przykład możliwość podejżenia jakie zapytanie jest przysłane "ajaxowo" ?
Jakub L.

Jakub L. Programista

Temat: AJAX a bezpieczeństwo

Piotr L.:

Zwykłe formy też mają target, i user też widzi, jaki.
Co rozumiesz przez 'widzi jakie zapytania są wykonywane'?

Na przykład możliwość podejżenia jakie zapytanie jest przysłane "ajaxowo" ?

Ale zaraz, jeżeli dobrze rozumiem AJAX, to z poziomu strony robi się GET z jakimiś parametrami do jakiegoś zasobu, i w stronę włącza się wynik tego zapytania.
Dokładnie ten sam mechanizm działa przy nieajaxowej komunikacji - jest sobie formularz, wypełnia się go i przekazuje do zasobu, który oddaje stronę.
IMHO kwestia bezpieczeństwa to autoryzacja takich zapytań, żeby inny host nie miał uprawnień do wywołania requestu i otrzymania odpowiedzi, oraz na zrobieniu filtrowania zmiennych HTML/SQL injections, nieuprawniony dostęp do zasobów i takie tam, ale to jest znane z historii webdevelopmentu.

konto usunięte

Temat: AJAX a bezpieczeństwo

Jakub L.:
Piotr L.:

Zwykłe formy też mają target, i user też widzi, jaki.
Co rozumiesz przez 'widzi jakie zapytania są wykonywane'?

Na przykład możliwość podejżenia jakie zapytanie jest przysłane "ajaxowo" ?

Ale zaraz, jeżeli dobrze rozumiem AJAX, to z poziomu strony robi się GET z jakimiś parametrami do jakiegoś zasobu, i w stronę włącza się wynik tego zapytania.
Dokładnie ten sam mechanizm działa przy nieajaxowej komunikacji - jest sobie formularz, wypełnia się go i przekazuje do zasobu, który oddaje stronę.
IMHO kwestia bezpieczeństwa to autoryzacja takich zapytań, żeby inny host nie miał uprawnień do wywołania requestu i otrzymania odpowiedzi, oraz na zrobieniu filtrowania zmiennych HTML/SQL injections, nieuprawniony dostęp do zasobów i takie tam, ale to jest znane z historii webdevelopmentu.


W sumie masz rację, w formularzu też można podejrzeć action="costam.php" :)
Krzysztof Kempiński

Krzysztof Kempiński Ruby on Rails / iOS
/ Elixir

Temat: AJAX a bezpieczeństwo

Nie tutaj jednak Panowie leży problem bezpieczeństwa AJAX.

Skrypty z jego użyciem są nastawione na ataki XSS i różnego rodzaju Injection (XML, DOM, JSON).

Polecam lekturę: http://www.net-security.org/article.php?id=956&p=1
Michał Zalewski

Michał Zalewski programista
aplikacji
internetowych

Temat: AJAX a bezpieczeństwo

Polecam lekturę: http://www.net-security.org/article.php?id=956&p=1

Dobry tekst.

Otrzymane zmienne walidowac nalezy zawsze.
Kiedys przeczytalem, ze mozna rozpoznac wywolania Aajaxowe i nieajaxowe po wysylanych/otrzymywanych naglowkach. Moze i mozna, ale nawet w PHP (np wykorzystujac funkcje fsockopen) bez wiekszych problemow mozna napisac skrypt wysylajacy dowolne naglowki pod dowolny adres. Obiekt xmlHttpReqest moze wyslac zadanie tylko w obrebie swojej domeny, warto wiec sprawdac z jakiego hosta dostajemy dane - jak nie z naszego to out.

Temat: AJAX a bezpieczeństwo

Krzysztof K.
Nie tutaj jednak Panowie leży problem bezpieczeństwa AJAX.

Skrypty z jego użyciem są nastawione na ataki XSS i różnego rodzaju Injection (XML, DOM, JSON).
Ataki XSS i Injection nie zależą przecież od bezpośrednio od użytej technologii. Takie ataki mogą być zarówno z wykorzystaniem AJAX, "czystego" PHP, a nawet C++ (chociaż w tym ostatnim do atakuj XSS nie za bardzo sobie mogę wyobrazić - mam za mało doświadczenia w tej dziedzinie).
Podstawą jest odpowiednie filtrowanie danych oraz sprawdzania skąd pochodzą.

Michał Z.:

Dobry tekst.

Otrzymane zmienne walidowac nalezy zawsze.
Kiedys przeczytalem, ze mozna rozpoznac wywolania Aajaxowe i nieajaxowe po wysylanych/otrzymywanych naglowkach. Moze i mozna, ale nawet w PHP (np wykorzystujac funkcje fsockopen) bez wiekszych problemow mozna napisac skrypt wysylajacy dowolne naglowki pod dowolny adres. Obiekt xmlHttpReqest moze wyslac zadanie tylko w obrebie swojej domeny, warto wiec sprawdac z jakiego hosta dostajemy dane - jak nie z naszego to out.
Ponoć hosta też da rade podmienić. Ja np. przy PHP stosuje mechanizm sesji. W pliku który generuje kod AJAXA ustawiam jakąś zmienną "sesyjną", w pliku do którego AJAX wysyła zapytania, sprawdzam czy została ona ustawiona i jaką ma wrtość.Tomasz Łosek edytował(a) ten post dnia 15.04.07 o godzinie 23:29
Michał Zalewski

Michał Zalewski programista
aplikacji
internetowych

Temat: AJAX a bezpieczeństwo

Ponoć hosta też da rade podmienić.

Jak ktos bardzo chce to mozna "prawie" wszystko :)
Filtrowanie danych to podstawa.
Michał Małaj

Michał Małaj programista /
analityk, Enzo sp. z
o.o.

Temat: AJAX a bezpieczeństwo

[author]Tomasz
Jakub L.

Jakub L. Programista

Temat: AJAX a bezpieczeństwo

To akurat nie jest do AJAXa, ale swego czasu była to fajna zabawa: http://quiz.ngsec.biz:8080/ - konkurs z łamania 'zabezpieczeń' webowych.

Temat: AJAX a bezpieczeństwo

Spróbuj podmienić :)

Po pierwsze ID sesji jest przetrzymywane albo w ciasteczku albo propagowane w URLu. Dodatkowo jest ono unikalne i jaką masz możliwość aby poznać numer sesji kolegi (zakładając, że Ci go nie poda). Ostatnia sprawa to wygaśnięcie sesji po jakimś czasie.

To sprawa bezpieczeństwa PHP w ogóle a nie samego AJAXA :)

Przepraszam za taki długi cytat ale myślę, że warto:

Moduł sesji nie może zagwarantować, że informacje, które są przechowywane w sesji, mogą być przeglądane tylko przez użytkownika, który stworzył tą sesję. Niezbędne jest przedsięwzięcie dodatkowych działań aby ochronić spójność sesji, zależnie od wartości do niej przypisanych.

Należy ocenić wartość danych przechowywanych w sesjach i zastosować dodatkowe zabezpieczenia - działania takie są zazwyczaj powiązane ze zmniejszeniem wygody użytkowników. Na przykład, aby ochronić użytkowników przed prostymi sposobami social engineering, należy włączyć dyrektywę session.use_only_cookies. W takim przypadku użytkownik musi mieć w swojej przeglądarce włączone ciasteczka - inaczej sesje nie będą działać.

Istnieje kilka dróg, przez które istniejący identyfikator sesji może zostać przejęty przez osoby trzecie. Przejęty identyfikator sesji pozwala osobom trzecim uzyskać dostęp do wszystkich zasobów powiązanych z daną sesją. Po pierwsze, identyfikator może być przejęty poprzez URLe zawierające identyfikatory sesji. Jeśli serwis zawiera linki do stron zewnętrznych, URL zawierający identyfikator sesji może być zapisany w logach odnośników (referrer) tego zewnętrznego serwisu. Po drugie, bardziej aktywny napastnik może podsłuchać ruch sieciowy. Jeśli nie jest on zaszyfrowany, identyfikatory będą przesyłane przez sieć czystym tekstem. Rozwiązaniem tego problemu jest zaimplementowanie szyfrowania SSL i uczynienie go obowiązkowym dla wszystkich użytkowników.


także Sesje + Identyfikator w ciachu + SSL powinno dać wystarczające bezpieczeństwo :)Tomasz Łosek edytował(a) ten post dnia 17.04.07 o godzinie 23:26
Jakub L.

Jakub L. Programista

Temat: AJAX a bezpieczeństwo

[author]Tomasz

Temat: AJAX a bezpieczeństwo

Man in the middle na przykład.

Jeśli aplikacja korzysta z certification authority to nie ma takiej możliwości :)
Phishingowa strona na przykład.

Takiego typu ataki wpływają na ludzi, co jest zazwyczaj najsłabszym ogniwem w systemie zabezpieczeń - taką techniką można rozwalić nie tylko sesji, ale i (prawie)dowolny system
A dokładnie to sprawa bezpieczeństwa protokołu http i
czegokolwiek, >co ten protokół obsługuje.
Tak - zgadzam się :) Podstawa to również korzystanie z SSLTomasz Łosek edytował(a) ten post dnia 18.04.07 o godzinie 00:21
Michał Małaj

Michał Małaj programista /
analityk, Enzo sp. z
o.o.

Temat: AJAX a bezpieczeństwo

[author]Tomasz

Temat: AJAX a bezpieczeństwo

Nie będę się z Tobą kłócił, bo jest dużo racji w tym co mówisz.

Co do:
AJAX dobrze działa pod SSL? Czy trzeba sięgać po jakiś specjalne
parametry HTTPRequest?
To Tak - AJAX działa normalnie pod SSL - ja nie stwierdziłem niczego dziwnego - przynajmniej w klasie AdvAJAX.

Tom.

konto usunięte

Temat: AJAX a bezpieczeństwo

Podobnie w prototype:) w innych bibliotekach też nie powinno być problemu:)
Michał Ławicki

Michał Ławicki dostawca zadowolenia

Temat: AJAX a bezpieczeństwo

to że dane trzymamy w sesji nie oznacza, że są one bezpieczne :-) zapraszam do zapoznania się z -> Bezpieczeństwo mechanizmu sesji

Następna dyskusja:

Jakie Frameworki/biblioteki...




Wyślij zaproszenie do