![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 4.02.2014 Ostrzeżenie: (20%) ![]() ![]() |
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 |
|
|
![]()
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:
i przy każdym żądaniu jest generowany nowy. Nie ma tu żadnej akcji ze strony użytkownika. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 4.02.2014 Ostrzeżenie: (20%) ![]() ![]() |
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? |
|
|
![]()
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:
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 4.02.2014 Ostrzeżenie: (20%) ![]() ![]() |
a mogę zapisać token w bazie danych w zamiast sesji? Co jest lepsze?
|
|
|
![]()
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
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 77 Pomógł: 0 Dołączył: 4.02.2014 Ostrzeżenie: (20%) ![]() ![]() |
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. |
|
|
![]()
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) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.09.2025 - 21:20 |