Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> token - tablica routingu
Omenomn
post
Post #1





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 4.02.2014

Ostrzeżenie: (20%)
X----


Cześć, chcę zapytać, co myślicie o zabezpieczeniu akcji w cmsie w taki sposób:

Cytat
Session riding

(inne nazwy to: cross-site request forgery ? CSRF, one click attack, session hijacking)

Celem ataku session riding jest wykonanie złośliwego kodu z uprawnieniami zalogowanego użytkownika. Może to doprowadzić do kradzieży danych użytkownika, zamówienie przez niego jakiegoś produktu (w przypadku sklepu), lub w przypadku wykonania kodu przez administratora ?dostęp? do panelu administratora.

Zabezpieczenie przed CSRF może wydawać się trudne lecz istnieje kilka sposobów by tego dokonać. Dwa najciekawsze opierają się na tokenach, czyli losowo wygenerowanych ciągach znaków.

Zasada działania pierwszego sposobu opiera się na umieszczeniu dodatkowe pola w każdym znaczącym formularzu. W polu tym będzie znajdował się wygenerowany token, który po wysłaniu formularza będzie sprawdzany z tokenem zapisanym np. w sesji.

Drugi sposób jest ?bardziej skomplikowany?, a wraz z tym lepszy. Polega on na stworzeniu ?tablicy routingu?. Mianowicie chodzi o tabelkę w bazie danych która będzie zawierała w sobie zestawienie tokenów oraz prawdziwych adresów. Token powinien być generowany inny dla każdego użytkownika. Dzięki temu napastnik nie będzie w stanie wywołać akcji z uprawnieniami zalogowanego użytkownika.


http://www.sklep.pl/?producent=jakis&p...y&akcja=kup


http://www.sklep.pl/?token=djJa76ashHSB

Opis: Zmiana wyglądów adresów po użyciu ?tablicy routingu?


źródło: www.beldzio.com/bezpieczenstwo-mechanizmu-sesji

Czy można jakoś inaczej rozwiązać sprawę tokenów, nie chcę korzystać z captcha.

Głównie chodzi o usuwanie zawartości strony, ale w sumie można by to zastosować chyba wszędzie.

Ten post edytował Omenomn 6.06.2015, 15:08:29
Go to the top of the page
+Quote Post
Comandeer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


Hm… A gdzie w powyższym tekście napisano o CAPTCHA? (IMG:style_emoticons/default/wink.gif)

Raczej token wygląda tak:
  1. <input type="hidden" name="token" value="<?=$token;?>">

i przy każdym żądaniu jest generowany nowy. Nie ma tu żadnej akcji ze strony użytkownika.
Go to the top of the page
+Quote Post
Omenomn
post
Post #3





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 4.02.2014

Ostrzeżenie: (20%)
X----


mówię, że nie chcę korzystać, a nie, że napisano.

Ja chcę token wykorzystać w odnośnikach nie w inputach, czyli chodzi o to, że przy każdym odświeżeniu strony zmienia się token i, że z jednego tokena można korzystać tylko raz, w sensie, że jeden link, działa tylko raz?
Go to the top of the page
+Quote Post
Comandeer
post
Post #4





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


Zasada jest podobna:
  1. generujesz token i zapisujesz go do sesji
  2. doklejasz go do linków
  3. user klika na link
  4. system sprawdza czy token się zgadza - jeśli nie, to nie wykonuje żądanej akcji, wywalając błąd 403
  5. powrót do punktu 1.
Go to the top of the page
+Quote Post
Omenomn
post
Post #5





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 4.02.2014

Ostrzeżenie: (20%)
X----


a mogę zapisać token w bazie danych w zamiast sesji? Co jest lepsze?
Go to the top of the page
+Quote Post
Comandeer
post
Post #6





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


I pobierałbyś dla każdego żądania? Raczej średnio wydajne moim zdaniem
Go to the top of the page
+Quote Post
Omenomn
post
Post #7





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 4.02.2014

Ostrzeżenie: (20%)
X----


ta tablica routingu tez mi się wydaje teraz średnim pomysłem, zrobiłem coś takiego, że po przeładowaniu strony przy każdym adresie generowany jest token, który po kliknięciu w link jest sprawdzany i jeśli jest zgodny z tym w sesji wtedy akcja wykonuje się, a token jest generowany na nowo.

Rozwiązałem bez inputów, a w linkach, ponieważ do usunięcia treści sądzę, że prostszym rozwiązaniem jest odnośnik niż formularz. Formularze powinno się używać tam gdzie, rzeczywiście są wymagane, takie moje zdanie.

Przechwycenie tokena raczej na niewiele się zda, bo i tak można go użyć tylko raz.
Dzięki za pomoc.
Go to the top of the page
+Quote Post
Comandeer
post
Post #8





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


Jeśli ktoś zmieni linka to token już będzie raczej przeterminowany.

Inna rzecz, że akcje usuwania itd raczej nie powinny lecieć po GET (no bo GET jak sama nazwa wskazuje służy do pobierania)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.09.2025 - 21:20