Cross Domain Form Delegowanie

Widziałem artykuły i posty na całym (w tym tak) na ten temat, a dominującym komentarzem jest to, że polityka tego samego pochodzenia uniemożliwia POST formularz w różnych domenach. Jedyne miejsce, gdzie widziałem, że ktoś sugeruje, że polityka tego samego pochodzenia nie ma zastosowania do tworzenia postów, jest tutaj .

Chciałbym uzyskać odpowiedź z bardziej "oficjalnego" lub formalnego źródła. Na przykład, czy ktoś zna RFC, które odnosi się do tego, jak to samo pochodzenie ma lub nie ma wpływu na Formularz POST?

Wyjaśnienie: nie pytam, czy GET lub POST można zbudować i wysłać do dowolnej domeny. Pytam:

    Jeśli Chrome, IE lub Firefox pozwoli treści z domeny " Y "wysyłać POST do domeny" X "
  1. Jeśli serwer odbierający POST faktycznie zobaczy jakiekolwiek wartości formularza. Mówię tak, ponieważ większość testerów dyskusji online twierdzi, że serwer otrzymał post, ale wartości formularza były puste / pozbawione Wynocha.
  2. jaki oficjalny dokument (np. RFC) wyjaśnia, jakie jest oczekiwane zachowanie (niezależnie od tego, co przeglądarki obecnie zaimplementowały).

Nawiasem mówiąc, jeśli to samo pochodzenie nie wpływa na posty postaci - to sprawia, że nieco bardziej oczywiste, dlaczego żetony anty-fałszerstwa są konieczne. Mówię "nieco", ponieważ wydaje się zbyt łatwo uwierzyć, że atakujący może po prostu wydać HTTP, aby odzyskać formularz zawierający token anty-fałszerstwa, a następnie zrobić nielegalny POST który zawiera ten sam token. Komentarze?

Author: Brent Arias, 2012-07-11

3 answers

Ta sama polityka pochodzenia ma zastosowanie tylko do języków programowania po stronie przeglądarki. Jeśli więc spróbujesz opublikować na innym serwerze niż serwer origin za pomocą JavaScript, wtedy ta sama polityka origin wchodzi w grę, ale jeśli opublikujesz bezpośrednio z formularza, tzn. akcja wskazuje na inny serwer, taki jak:

<form action="http://someotherserver.com">

I nie ma javascript zaangażowany w publikowanie formularza, wtedy ta sama polityka pochodzenia nie ma zastosowania.

Zobacz wikipedia aby uzyskać więcej informacji

 133
Author: Suresh Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-11 03:14:17

Możliwe jest zbudowanie dowolnego żądania GET lub POST i wysłanie go do dowolnego serwera dostępnego dla przeglądarki. Dotyczy to urządzeń w sieci lokalnej, takich jak drukarki i routery.

Istnieje wiele sposobów budowania exploita CSRF. prosty atak CSRF oparty na poczcie może być wysłany za pomocą metody .submit(). Bardziej złożone ataki, takie jak cross-site file upload CSRF attacks {[7] } będą wykorzystywać CORS korzystanie z xhr.withCredentals zachowanie .

CSRF nie narusza Polityki samego pochodzenia dla Javascriprip t, ponieważ SOP dotyczy JavaScript czytanie odpowiedź serwera na zapytanie klienta. Ataki CSRF nie dbają o odpowiedź, dbają o efekt uboczny lub zmianę stanu wywołaną przez żądanie, np. dodanie użytkownika administracyjnego lub wykonanie dowolnego kodu na serwerze.

Upewnij się, że Twoje żądania są chronione za pomocą jednego z metody opisane w arkuszu prewencyjnym OWASP CSRF. Więcej informacji na temat CSRF można znaleźć na stronie OWASP na stronie CSRF .

 38
Author: Mikey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-11 02:59:18

Ta sama polityka pochodzenia nie ma nic wspólnego z wysyłaniem żądania do innego adresu url (innego protokołu, domeny lub portu).

Chodzi o ograniczenie dostępu do (odczytu) danych odpowiedzi z innego adresu url. Tak więc kod JavaScript na stronie może wysyłać do dowolnej domeny lub przesyłać formularze na tej stronie w dowolnym miejscu (chyba że Formularz znajduje się w ramce iframe z innym adresem url).

Ale to, co sprawia, że te żądania POST są nieefektywne, to to, że te żądania nie mają żetonów antyforgerowych, więc są ignorowane przez drugi adres url. Co więcej, jeśli JavaScript próbuje uzyskać te tokeny bezpieczeństwa, wysyłając żądanie AJAX na adres URL ofiary, uniemożliwia się dostęp do tych danych za pomocą tej samej polityki pochodzenia.

Dobry przykład: tutaj

I dobra dokumentacja z Mozilli: tutaj

 13
Author: Mohsenme,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-17 10:45:55