Czy da się ominąć CORS?

Czy da się ominąć CORS?
MA
  • Rejestracja:około 8 lat
  • Ostatnio:około rok
  • 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?

stivens
masz dostep do serwera czy to jakies api strony trzeciej?
stivens
bo generalnie serwer sobie ustala z jakich domen przyjmuje requesty
MA
MA
dokladnie, wiec jesli daloby rade zmienic origin to mozna by sie polaczyc chyba?
nowyworek
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:świat
  • Postów:174
1

Jakieś proxy jak nginx np.


Julian
MA
  • Rejestracja:około 8 lat
  • Ostatnio:około rok
  • Postów:34
0

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

edytowany 1x, ostatnio: cerrato
nowyworek
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:świat
  • Postów:174
0

Dodając headera Access-Control-Allow-Origin


Julian
edytowany 2x, ostatnio: cerrato
MA
  • Rejestracja:około 8 lat
  • Ostatnio:około rok
  • 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ę?

edytowany 1x, ostatnio: cerrato
nowyworek
  • Rejestracja:prawie 5 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:świat
  • Postów:174
0

Te api to wasze czy czyjes?


Julian
MA
  • Rejestracja:około 8 lat
  • Ostatnio:około rok
  • Postów:34
0

Czyjeś

edytowany 1x, ostatnio: cerrato
mr_jaro
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 3 lata
  • 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ść.


It's All About the Game.
MA
no zakladam ze przez przegladarke top nie przejdzie, tylko nie rozumiem za bardzo co w takim skrpycie backendowym trzeba ustawic, zmienic headery, origin, referrer...?
mr_jaro
@mazurro: backendowo cors nie działa a jeśli blokują ci takie requesty to pewnie blokują po ip więc jesteś zablokowany.
MA
Nie blokują po ip, tak jak pisalem, po odswiezeniu przegladrki dane przychodza, nie dziala tylko bezposrednie uderzanie
MA
  • Rejestracja:około 8 lat
  • Ostatnio:około rok
  • Postów:34
0
stivens
ale to nie jest tak, ze W PRZEGLADARCE sie nie da?
MA
chyba w ogóle się nie da
Delor
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
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?

edytowany 1x, ostatnio: Delor
MA
  • Rejestracja:około 8 lat
  • Ostatnio:około rok
  • 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

edytowany 1x, ostatnio: cerrato
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:około 2 godziny
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?


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
edytowany 3x, ostatnio: obscurity
Freja Draco
Freja Draco
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 3 lata
  • 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.


edytowany 1x, ostatnio: Freja Draco
WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:dzień
  • Postów:5138
2

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

obscurity
o tym piszą przez cały temat

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.