Czy taki kod:
if (!empty($_POST)) array_walk_recursive
($_POST, 'CleanTags'); if (!empty($_GET)) array_walk_recursive
($_GET, 'RemoveXSS'); if (!empty($_COOKIE)) array_walk_recursive
($_COOKIE, 'CleanTags'); if (!empty($_SERVER)) array_walk_recursive
($_SERVER, 'CleanTags'); if (!empty($_SESSION)) array_walk_recursive
($_SESSION, 'CleanTags'); if (!empty($_REQUEST)) array_walk_recursive
($_REQUEST, 'CleanTags');
function CleanTags(&$val, $index) {
}
jest dobrym zabezpieczeniem przede XSS i CSRF? Czy można to zrobić jakoś lepiej?
W drugiej linijce chciałem oczywiście napisać:
if (!empty($_GET)) array_walk_recursive($_GET, 'CleanTags');
wNogachSpisz
1.08.2012, 11:30:01
A czy ten sposób, który podałem nie jest dobry?
wNogachSpisz
1.08.2012, 12:33:39
Cytat(Gość @ 1.08.2012, 12:50:44 )

A czy ten sposób, który podałem nie jest dobry?
Nijak nie zabezpiecza przed CSRF.
Ale przecież ten kod usuwa wszystkie znaczniki jakie użytkownik może gdziekolwiek podać (pole formularza, doklejenie do adresu, itd.), a żeby CSRF się udał atakujący musi mieć chyba możliwość wstawiania znaczników?
wNogachSpisz
1.08.2012, 12:58:24
Tak, z tego co teraz doczytałem najważniejsze w ochronie przed CSRF jest, żeby sprawdzać poprawność tokena, ale ochrona przed XSS jest chyba częścią ochrony przed CSRF (przynajmniej wg. tego co jest napisane
tutaj - "Make sure your site is not vulnerable to XSS")?
wNogachSpisz
1.08.2012, 14:19:04
Strona nie musi być podana na XSS żeby możliwe było przeprowadzenie ataku CSRF.
Nawet na forum php.pl można przeprowadzić niegroźny atak CSRF. Mogę np. spowodować, że Twoj login pojawi się na liście odwiedzjących mój profil. Wystarczy obrazek w treści posta który przekieruje na odpowiedni URL.
Pozostaje kwestia w jaki sposób przechowywać token? W przypadku formularzy można go schować w polu hidden. A jak będzie w przypadku odnośników? Gdzie go można przechowywać? Na pewno w samym adresie URL, ale czy oprócz tego (nie chciałbym przechowywać tokena w adresie URL bo to by trochę spaskudziło przyjazne adresy) jest jeszcze jakiś inny sposób? Może jakoś w zmiennej sesji?
CuteOne
4.08.2012, 23:17:14
Odpowiedź jest dość prosta - wszelkie akcje typu "zmień coś" (np. akcja "Usuń moje konto") wstaw do formularza z tokenem. Pozostałe akcje nie będą interesowały potencjalnego hakiera
No ale jeżeli np. po zalogowaniu w panelu użytkownika jest link "Usuń moje konto", to taka akcja raczej na pewno będzie bardzo interesowała hakera.
Cytat(Gość @ 5.08.2012, 10:34:58 )

No ale jeżeli np. po zalogowaniu w panelu użytkownika jest link "Usuń moje konto", to taka akcja raczej na pewno będzie bardzo interesowała hakera.
Nawet bardzo. Jednak nie widziałem jeszcze serwisu, który umożliwiałby usunięcie konta zwyczajnie po kliknięciu w link.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.