• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

przesyłanie plików i danych pośrednio.

Object Storage Arubacloud
+1 głos
205 wizyt
pytanie zadane 13 października 2015 w Offtop przez KULTI Obywatel (1,400 p.)
edycja 13 października 2015 przez KULTI

Witam serdecznie, czy jest możliwość za pomocą inputa type "file" przesyłanie pośrednio pliku z naszej strony na inną która "się spodziewa plików z naszej strony", nie angażując do tego naszego serwera. Nie tworząc specjalnych skryptów pod moją stronę, tylko przesyłać to przykładowo postem lecz metodą uniwersalną. A nadanie uprawnień odbywać się będzie tylko na stronie do której wysyłam plik?

Przykład:

<form action="stronadoktorejprzesylam.pl/skrypt.php" enctype="multipart/form-data">
	<input type="file" name="nazwa" />
</form>

A od strony serwera do którego przesyłam nadanie uprawnień. Czy jest to możliwe?
Najbardziej zastanawia mnie przesyłanie wyglądające tak: dysk lokalny >> serwer docelowy lecz z ominięciem przesyłania dysk lokalny >> mój serwer >>serwer docelowy. Ponieważ serwer docelowy chce przesłania pliku, a chodzi tylko aby w pośredniczącym dodać input aby przesłać plik na serwer docelowy z ominięciem dublowania przesyłania plików i aby transfer na moim serwerze nie pobierał się w przypadku przesyłania, więc pewnie nadanie uprawnień się przyda

6 odpowiedzi

+2 głosów
odpowiedź 14 października 2015 przez furas Maniak (53,800 p.)
edycja 14 października 2015 przez furas
Jeśli dobrze rozumię to chcesz na swoim serwerze dać stronę z formularzem, który będzie wysyłał dane do serwera docelowego.

Teoretycznie jest to możliwe.

Trzeba by w formularzu dać w polu "action=" pełny adres do strony na serwerze docelowym.

Formularz musiał by też zawierać wszystkie inne pola, które znajdują się w formularzu na serwerze docelowym.

I to może być problem. Serwer docelowy może generować losową liczbę, zapamiętywać ją u siebie w sesji użytkownika i jednocześnie umieszczać ją w formularzu. Po odebraniu formularza może sprawdzać czy te liczby się zgadzają i dopiero wtedy pozwalać na załadowanie pliku. Dla formularza pobranego z twojego serwera nie znajdzie nawet sesji danego użytkownika - bo użytkownik wcześniej nie wchodził na ten serwer docelowy.

Inna sprawa, że jak formularz pobrany z twojego serwera zawiera adres do innego serwera to tamten serwer w odpowiedzi na dane z formularza odeśle swoją stronę - użytkownik zostanie całkowicie przekierowany na serwer docelowy.
+1 głos
odpowiedź 14 października 2015 przez Schizohatter Nałogowiec (39,600 p.)
Tak, da się. O ile serwer docelowy takie coś dopuszcza. W "action" podajesz de facto adres, pod który przeglądarka wysyła dane, tak więc to może być cokolwiek, co przeglądarka zrozumie. Często duże strony jednak w ogóle nie dopuszczają czegoś takiego, ponieważ w formularzach generowanych na ich stronach znajdują się tokeny identyfikujące sesję. Jeśli wysyłasz coś z zewnątrz, to serwer tego nie przyjmie.

Zainteresuj się, czy serwis docelowy posiada może specjalne API na taką okoliczność - bo może posiadają i nie trzeba kombinować. Wystarczy tylko przesłać dane w ściśle ustalony sposób i będzie po problemie :)
komentarz 14 października 2015 przez KULTI Obywatel (1,400 p.)
Rozumiem, a jak na serwerze docelowym(B). Ograniczyć przyjmowanie danych tylko do serwera A oraz do ścieżki a. Przykładowo ma on domenę example.pl/a
0 głosów
odpowiedź 14 października 2015 przez KULTI Obywatel (1,400 p.)
Bardzo mi zależy na odpowiedzi. :)
komentarz 14 października 2015 przez furas Maniak (53,800 p.)
takie trywialne pytanie: a próbowałeś zgrać z serwera docelowego stronę z formularzem i umieścić ją na swoim serwerze ?

Oczywiście w polu "action=" może być potrzeba dodania pełnej nazwy serwera docelowego "http://serwer_docelowy.pl/".
0 głosów
odpowiedź 14 października 2015 przez KULTI Obywatel (1,400 p.)

Rozumiem, lecz mówimy tutaj o sytuacji w której "moja strona jest proszonym gościem" i uniwersalnie jak w takim przypadku przesyłać dane i odbierać? Czy istnieją specjalne zezwolenia, aby dany serwer mógł wysyłać dane do serwera docelowego?
Czy w tym przykładzie:

<form action="stronadoktorejprzesylam.pl/skrypt.php" enctype="multipart/form-data">

    <input type="file" name="nazwa" />

</form>

To jest umieszone na stronie A, a plik wysyłam do strony B. Czy w takim przypadku ze strony A na której jest umieszczone nie będzie pobierany transfer za wysłanie pliku, a plik trafi bez pośredników od użytkownika do strony B? Czy w tym przypadku Będzie to wyglądało tak : user > A(nasza) > B(docelowa) czy może user > B(docelowa) ??

 

komentarz 14 października 2015 przez writen Nałogowiec (29,060 p.)
Jeśli w atrybucie action podasz adres do jakiejś innej strony, to formularz zostanie tam wysłany.
komentarz 14 października 2015 przez KULTI Obywatel (1,400 p.)
Więc mimo że mam umieszczony formularz na stronie A, plik zostanie wysłany bezpośrednio do strony B. Tak? :)
komentarz 14 października 2015 przez writen Nałogowiec (29,060 p.)
Tak, ponieważ formularz ten nie będzie miał żadnego powiązania z jakimkolwiek skryptem znajdującym się na twoim serwerze. Bo w końcu wysyłasz go gdzie indziej, prawda?

Transfer pliku na stronę docelować nie będzie dotyczył twojego serwera. Tranfer z twojego serwera będzie jedynie dotyczył wyświetlenia formularza w przeglądarce.
0 głosów
odpowiedź 14 października 2015 przez KULTI Obywatel (1,400 p.)
Jeśli mogę zapytać już całościowo nie zakładając kolejnego pytania. Czy język html5 oraz css jest w pełni bezpieczny dla mojej strony gdy dam możliwość tworzenia w specjalnym oknie mojej strony użytkownikowi swoją część strony? Jakim sposobem zablokować możliwość edytacji css'em reszty strony. Tylko daną część, przykładowo plik html i css będzie jakby includowany do danego diva. W zależności od tego na jaką stronę użytkownika trafiłem.
komentarz 14 października 2015 przez furas Maniak (53,800 p.)
W tworzeniu stron nie masz innego wyboru niż HTML i CSS.

Ale wydaje mi się, że mylisz pojęcia. HTML jest językiem do przedstawiania zawartości strony. Bezpieczeństwo to zaś problem jak napiszesz kod w językach programowania jak PHP, Python czy Ruby.

Problem bezpieczeństwa może być bardzo rozległym zagadnieniem więc między innym dlatego ludzie tworzą frameworki aby inni nie musieli przez pewne sprawy przechodzić i na nowo wszystko odkrywać (i popełniać błędy z braku pełnej wiedzy o zagadnieniu).
0 głosów
odpowiedź 15 października 2015 przez KULTI Obywatel (1,400 p.)

Jakim sposobem ograniczyć przyjmowanie danych tylko do serwera A oraz do ścieżki a. Przykładowo ma on domenę example.pl/a?

komentarz 15 października 2015 przez furas Maniak (53,800 p.)
Ale co konkretnie chcesz zrobić bo nie jest to jasne ?

Chcesz aby Twój formularz wysyłał dane na serwer A do katalogu 'a' ?

A czy formularz na serwerze A pozwala podać miejsce docelowe 'a' ?

Jeśli nie pozwala to nic nie zrobisz.
komentarz 15 października 2015 przez KULTI Obywatel (1,400 p.)
Chodzi o to aby każda strona nie mogła wysyłać sobie POSTÓW, tylko jedna jedyna w tym przypadku example.pl/a. Jak ubrać w kod takie ograniczenie? :)
komentarz 15 października 2015 przez furas Maniak (53,800 p.)

Teraz rozumie - na swoim serwerze chcesz przyjmować POSTy tylko z adresu http://example.pl/a .

Protokół HTTP przewiduje w nagłówku pole `referer`, w którym przeglądarka powinna przesłać adres strony, z której przychodzi na Twój serwer. 

https://pl.wikipedia.org/wiki/HTTP_referer

Oczywiście zawsze można stworzyć własny skrypt, który będzie wysyłał POSTy udając, że przychodzi z http://example.pl/a :)

komentarz 15 października 2015 przez KULTI Obywatel (1,400 p.)
Tak, wiem. Lecz to rozwiązanie nie sprawdziłoby się nawet w przypadku małej strony. Bo to zabezpieczenie nie jest zabezpieczeniem. :)
Myślę że dużo lepiej dodać coś w stylu generowanego jednorazowego tokenu, który strona A(czyli moja, wysyłająca plik) wysyłałaby, a strona B podrównywała z oryginałem.
komentarz 15 października 2015 przez furas Maniak (53,800 p.)

A ja zrozumiałem, że mówisz o dwóch osobnych serwerach - formularz ze strony http://A/a ma wysyłać do serwera B.

W przypadku stron na jednym serwerze to chyba standardowym jest jednorazowy "Csrf Token". Niektóre frameworki to mają nawet wbudowaną obsługę tego tokena w formularzach.
 

https://pl.wikipedia.org/wiki/Cross-site_request_forgery

Podobne pytania

0 głosów
1 odpowiedź 131 wizyt
pytanie zadane 20 kwietnia 2016 w C i C++ przez Grzyboo Nałogowiec (28,860 p.)
+1 głos
1 odpowiedź 412 wizyt
pytanie zadane 30 sierpnia 2021 w PHP przez poczatkujacy-prog Początkujący (410 p.)

92,624 zapytań

141,482 odpowiedzi

319,822 komentarzy

62,005 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...