2012-12-27 15 views
14

Mamy aplikację .NET C# MVC z niektórymi formularzami, która działa dobrze. Teraz mamy również stronę vbscript ASP Classic, która wymaga interakcji z tymi formularzami, ale przy użyciu zwykłego postu dostaliśmy błąd mówiąc, że nie ustawiono parametru __RequestVerificationToken.Jaki jest pożytek z __RequestVerificationToken?

Dlatego żądamy strony, a następnie przechowujemy token z ukrytego wejścia i pliku cookie w zmiennej i wysyłamy długo z żądaniem POST. I działa.

Widząc jednak, że tak łatwo go ominąć, jaki jest pożytek z tego? Nie oferuje prawie żadnej ochrony.

Odpowiedz

12

to jest token przeciwko fałszerstwu (zapobiega atakowi CSRF). Gwarantuje to, że plakat jest tym, który dostaje formę.

Uniemożliwia to nikomu ukształtowanie łącza i aktywowanie go przez zasilanego użytkownika.

+0

Tak, to działałoby na żądanie GET. W takim razie warto mieć te rzeczy na miejscu, aby nie mogły ukryć linku w obrazie. Ale ponieważ jest to żądanie POST, atakujący nie może po prostu użyć łącza w formularzu. Potrzebuje javascript lub regularnej formy, którą może kontrolować. A jeśli ma do tego dostęp, może zażądać tokena w imieniu użytkownika i użyć go. –

+2

@ HugoDelsing: czytając [this] (http://blog.stevensanderson.com/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/) Dowiedz się, jak działa ValidateAntiForgeryTokenAttribute. Ale imho bez uwierzytelnienia (to jest filtr autoryzacji) token jest bezużyteczny, gdy wskażesz swój post. Uwierzytelnianie uniemożliwia osobie atakującej uzyskanie prawidłowego tokena. – tschmit007

Powiązane problemy