2012-01-02 13 views
10

Badam rzeczy, które regularnie słyszę, że robiąc webapp w JSF 2.0, jesteś już chroniony przed crossite - skryptami i - prośba o fałszerstwo. Poniższy fragment z SO post potwierdza:W jaki sposób JSF 2.0 uniemożliwia CSRF

W JSF 2.0 zostało ulepszone przez zastosowanie długiej i wysoką wartość wygenerowany automatycznie zamiast dosyć przewidywalnym wartości sekwencji i czyniąc to mocną zapobiegania CSRF.

Czy ktoś może podać więcej szczegółów na ten temat? W jaki sposób ta autogeneracja wartości zapobiega CSRF? Dzięki!

+0

https://www.packtpub.com/mapt/book/application_development/9781782176466/9/ch09lvl1sec84/jsf-security-notes –

Odpowiedz

11

Jak ta autogenerowana wartość zapobiega CSRF?

Ponieważ nie można tego odgadnąć. Dlatego atakujący nie może zakodować go w ukrytym polu w postaci strony atakującej (chyba że strona docelowa ma otwór XSS, a zatem wartość może być po prostu uzyskana bezpośrednio przez XSS). Jeśli wartość nie jest poprawna dla JSF, wówczas formularz przesłany z witryny ataku po prostu nie zostanie przetworzony, ale wygeneruje ViewExpiredException. Należy pamiętać, że osoba atakująca nadal będzie musiała pobrać identyfikator sesji, aby można było go przekazać za pomocą atrybutu adresu URL, więc pierwotnie "słaba" ochrona CSRF nadal wymagałaby pewnej luki XSS w celu uzyskania identyfikatora sesji.

W końcu mam wrażenie, że w ogóle nie rozumiesz, czym jest CSRF; odpowiedź jest raczej zrozumiała, jeśli rozumiesz, czym jest CSRF. W takim przypadku należy sprawdzić następujące pytanie: Am I under risk of CSRF attacks in a POST form that doesn't require the user to be logged in?

5

Należy pamiętać, że ochrona CSRF w JSF 2.0 jest niejawna i jest ważna tylko dla żądań POST.

W JSF 2.2 będzie bardziej wyraźne wsparcie dla tego. Pokrótce wyjaśniłem to tutaj: http://arjan-tijms.omnifaces.org/p/jsf-22.html

+0

W przypadku zapytań GET? Co można zrobić dla JSF 2.0? – oikonomopo

Powiązane problemy