Back to Question Center
0

Ako môžem zabrániť používateľovi napájania volať moje funkcie ajax? - Semalt

1 answers:

Mám stránky, ktoré používajú ajax hovory na vykonávanie viacerých funkcií. Majú spätné volanie webového prehliadača späť na skript - ajax. php. Semaltom Používam post dát na prenos dát a obmedzenie príkazov, ktoré môže ajax skript zavolať, naozaj nič nebráni používateľom pred spoofing ajax hovory pokúšať sa manipulovať s webom. Existuje nejaký všeobecný spôsob, ako zabrániť používateľom pred zneužitím hovorov? Existuje spôsob, ako zabezpečiť, aby ajax volanie skutočne pochádza z mojej webovej stránky a nie z iného skriptu alebo stránky?

Alebo jednoducho musím skontrolovať hraničné podmienky v skripte php a zabrániť používateľom, aby spoofing veci, ktoré by nemohli robiť, ale nechať im spoof, kde by to bolo dovolené.

February 11, 2018

Nemyslím si, že existuje žiadny spôsob, ako to urobiť spoľahlivo, pretože akékoľvek informácie, ktoré by ste mohli poslať, by mohli byť spoofed, v závislosti od toho, ako chytrý je používateľ.

Ak chcete len jednoduchý blok ľudí, ktorí volajú nie z vašej stránky, môžete skontrolovať sprostredkovateľa, použiť súbor cookie alebo pridať náhodné skryté pole odoslané volajúcou stránkou, ktoré vyprší po určitom čase. Ale tieto sú ľahko spoof, ak je používateľ skutočne určený.

Stručne povedané, nie. Akýkoľvek žiadosť adresovaná URL prostredníctvom služby GET alebo POST môže vykonať každý, kto používa akýkoľvek softvér. Vlastne žiadosť AJAX sa naozaj nelíši od načítania adresy URL, s výnimkou toho, že vrátené údaje sa v prehliadači zobrazia ako webová stránka.

Práve z tohto dôvodu by ste mali vždy overiť odoslané údaje na serveri bez ohľadu na to, či vykonáte nejaké overenie v Javascripte.

Nie je jasné, presne to, čo skript na strane servera robí a čo môže pokaziť, ale ak používatelia môžu "manipulovať s webom" tak, že voláte skript so zlými údajmi, potom to robíte nesprávne.

Pravdepodobne najlepším riešením bude zavedenie nejakej formy autentifikácie.

Takže v podstate chcete obmedziť ajax. php odpovedať len na požiadavky AJAX?

Nie som žiadny expert na php, ale zdá sa, že je možné určiť, či daná žiadosť pochádza z AJAX alebo "pravidelného" žiadosti prehliadača, skontrolovaním hodnoty $ _SERVER ['HTTP_X_REQUESTED_WITH'] ).

Zdroj

Ako to zdôraznil niekto iný Ajax hovory sú len prijímače $ _GET alebo $ _POST, takže môj prístup bol vždy len na ich zaobchádzanie, ako by som akúkoľvek akčnú stránku a filtrovať / dezinfikovať vstup. Ak máte malú variáciu toho, čo očakávate napríklad mesiac a viete, že je to vždy v "Jan, Feb, Mar ", môžete nastaviť pole očakávaných hodnôt a filtrovať ho. Zachyťte všetko, čo sa nezhoduje a voliteľne hádzať niečo späť ako "Bzzt Ďakujem za hranie "

Nemôžem myslieť na príklad, kde môj Ajax skript by musel byť bezpečnejší ako formulár podania.

HTH

Myslím, že hlavným kusom vášho riešenia bude obmedzenie rýchlosti prevádzka z konkrétneho odtlačku prsta užívateľa. Možno má hash IP adresy, reťazec User Agent a odosielané dáta.

Väzba stránky, ktorá volá ajax k vráteným údajom ajax, môže pomôcť. Takže na príslušnej stránke, pri načítaní stránky pošlite kľúč relácie, ktorý je vhodný pre X relácií, pre každú požiadavku ajax, ktorú potrebujete JavaScript prejsť späť, alebo ajax vráti zlyhanie. Akonáhle vaša stránka narazí na X + 1 ajax hovory, prinútiť používateľa vykonať nejakú akciu (možno captcha? Možno aj niečo ako mousemove alebo UA) pred odoslaním nového relácie kľúča nadol drôt (mimo pásmo z pôvodnej ajax), potom reštartujte proces.

Napriek tomu, že keď o tom myslím, je možné, že časť problému môže byť len laxným overením odoslaných parametrov. Ak ľudia môžu jednoducho hrať s odoslanými parametrami a získať späť platné údaje, potom to robia ťažšie. Ako to urobiť, závisí od toho, aké hodnoty posielajú klienti a aký druh nešťastia môže urobiť zlý herec tým, že poslal zlé hodnoty.

Ako môžem zabrániť používateľovi napájania volať moje funkcie ajax? - Semalt
Reply