Czy da się ominąć CORS?

Czy da się ominąć CORS?
MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 34
0

Cześć,

Wie ktoś może czy da się coś zrobić w sytuacji gdy chcemy dostać się do prywatnego API chronionego przez CORS? Dane spływają jedynie gdy odświeżę sobie stronę A na której się wyświatlają (CORS to chyba jedyne zabezpieczenie, nie trzeba się logować), natomiast gdy uderzę bezpośrednio w url od api (np. http://api.url-api.pl) to rzuca 403. Z tego co rozumiem CORS blokuje wszyzstkie requesty ze źródeł innych niż strona A, poprzez sprawdzenie headera origin. Czy istnieje jakiś sposób na obejście tego, poprzez np. ustawienie origina manualnie, np w jakiejś bilbiotece node'owej do wysyłania requestów? Czy jest to niemożliwe?

nowyworek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: świat
  • Postów: 174
1

Jakieś proxy jak nginx np.

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 34
0

Rozumiem że to proxy zmieniałoby jakoś requesta. W jaki sposób konkretnie?

nowyworek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: świat
  • Postów: 174
0

Dodając headera Access-Control-Allow-Origin

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 34
0

Hmmm... Nie brzmi to jak coś co ustawia origin, a na moje to origina trzeba by jakoś zmienić... czy się mylę?

nowyworek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: świat
  • Postów: 174
0

Te api to wasze czy czyjes?

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 34
0

Czyjeś

mr_jaro
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Grudziądz/Bydgoszcz
  • Postów: 5300
2

przez js nie ominiesz chyba, że napiszesz to bicie do api w node.js lub innym języku backendowym to cors nie zadziała natomiast jest możliwe, że mają inne blokady na taką ewentualność.

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 34
Delor
  • Rejestracja: dni
  • Ostatnio: dni
0

Bezpośrednio będzie problem. Obejście to pośrednicy.
Jakieś losowe linki z wyszukiwarki:
https://medium.com/netscape/hacking-it-out-when-cors-wont-let-you-be-great-35f6206cc646
https://mansfeld.pl/bezpieczenstwo/cors-co-to-jest-jak-obejsc-ajax/

Jeżeli te sposoby nie działają to znaczy że (obok CORS) są jakieś dodatkowe zabezpieczenia.
Co oznacza "natomiast gdy uderzę bezpośrednio w url od api (np. http://api.url-api.pl) to rzuca 403.". Robisz to tylko w js w przeglądarce?

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 34
0
Delor napisał(a):

Bezpośrednio będzie problem. Obejście to pośrednicy.
Co oznacza "natomiast gdy uderzę bezpośrednio w url od api (np. http://api.url-api.pl) to rzuca 403.". Robisz to tylko w js w przeglądarce?

Tak, ale przez skrypt w nodzie albo postmana też rzuca 403

obscurity
  • Rejestracja: dni
  • Ostatnio: dni
1
mazurro napisał(a):

Tak, ale przez skrypt w nodzie albo postmana też rzuca 403

no to w takim razie to nie jest CORS bo CORS jest respektowany tylko przez przeglądarki. Być może API sprawdzia referer - ten też łatwo dodać do zapytania. Podejrzyj filddlerem zapytanie jakie idzie do strony ze wszystkimi nagłówkami i po prostu zrób takie samo. Ale to walka z wiatrakami - jak autor zobaczy że leci więcej zapytań z Twojego proxy to może je zablokować. Może też w każdej chwili zmienić swoje API albo je usunąć bez powiadomienia - najlepiej się dogadać z autorem strony, ewentualnie mu coś zapłacić za dostęp do API, wtedy masz gwarancję że Twoja strona nie przestanie nagle bez uprzedzenia działać. To co teraz robisz to korzystanie z cudzej pracy bez jego zgody podpisując się pod nią - w sumie dziwne że jeszcze nie ma tego w prawie ale podchodzi definicją pod plagiat.
W zasadzie to może dobrze że nie ma takiego przepisu, bo jak się jakiś urzędnik dowiedział że istnieje coś takiego jak ciasteczka to teraz wszyscy mają bezsensowne dodatkowe klikanie na każdej stronie - cholera wie jak by zareagowali jakby się dowiedzieli że można "kraść" dostęp do API - uregulowaliby tworzenie API?

Freja Draco
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3394
1
mazurro napisał(a):

Cześć,

Wie ktoś może czy da się coś zrobić w sytuacji gdy chcemy dostać się do prywatnego API chronionego przez CORS?

Zależy, co chcesz zrobić. Dla konkretnej przeglądarki możesz użyć wtyczek typu: Referrer Control albo Disable Content-Security-Policy. Ew. samemu sobie coś napisać.

Ale jeśli chcesz to wykorzystać np. na publicznie dostępnej stronie, to raczej się nie da.

WeiXiao
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5226
2

CORS to ficzur przeglądarek, więc a gdybyś sobie wystawił swoje API, które odpytuje tamto API? Xd

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.