Zadejte hledaný výraz...

Zabezpečení API proti volání "zvenčí"

Ondřej Záruba
verified
rating uzivatele
30. 10. 2013 21:54:07
Zdravím,
řeším teď v jedné javascriptové aplikaci problém s autorizací ajaxových požadavků.
Jde o to, že mám navržené PHP API tak abych pomocí ajaxových dotazů mohl pracovat s některými částmi aplikace, problém bohužel nastává, že api je přístupné i "zvenčí" čemuž bych rád zabránil.
Na netu jsem našel několik článků na toto téma, ale některé si dost protiřečili, takže v tom mám trochu bordel,
mohl by mi někdo ze zkušenějších poradit jakým způsobem se toto řeší? Potřebuji zabránit tomu aby někdo kromě "mého vlastního" javascriptu mohl pracovat s API.
Předem díky
30. 10. 2013 21:54:07
https://webtrh.cz/diskuse/zabezpeceni-api-proti-volani-zvenci#reply960618
carlos
verified
rating uzivatele
(19 hodnocení)
30. 10. 2013 22:07:54
implementovat heslo?
30. 10. 2013 22:07:54
https://webtrh.cz/diskuse/zabezpeceni-api-proti-volani-zvenci#reply960617
Ondřej Záruba
verified
rating uzivatele
30. 10. 2013 22:10:18
carlos:
To mě napadlo, ale nějak nevim jak to posílat ajaxem...Kdykoliv bych heslo přidal do volání ajaxu tak si ho "každý" může přečíst ve zdrojáku javascriptu
30. 10. 2013 22:10:18
https://webtrh.cz/diskuse/zabezpeceni-api-proti-volani-zvenci#reply960616
P-ierre
verified
rating uzivatele
(43 hodnocení)
30. 10. 2013 22:27:55
Co $_SERVER? Budete ověřovat, jestli volající skript je ze stejné domény. (Teď jsem to zkoušel na localhostu a referer skutečně hlásí jako volající stránku.)
Na druhou stranu - je to sice ztížení, ale i referer se dá zfalšovat.
30. 10. 2013 22:27:55
https://webtrh.cz/diskuse/zabezpeceni-api-proti-volani-zvenci#reply960615
t-pack25
verified
rating uzivatele
30. 10. 2013 22:31:43
P-ierre
Referer sa dá zakázať v prehliadači, takže na to by som sa nespoliehal.
30. 10. 2013 22:31:43
https://webtrh.cz/diskuse/zabezpeceni-api-proti-volani-zvenci#reply960614
Dominik Vrba
verified
rating uzivatele
(6 hodnocení)
30. 10. 2013 22:36:13
Nevím, zda-li jsem to dobře pochopil, ale co takhle využít jednoduše firewall ? Například u Linuxu se dá krasně a jednoduše nakonfigurovat, aby příchozí pakety z vnitřní sítě prošly k Vám na server, kde běží Vaše aplikace a pakety příchozí z internetu byly zahozeny :-).
30. 10. 2013 22:36:13
https://webtrh.cz/diskuse/zabezpeceni-api-proti-volani-zvenci#reply960613
Ondřej Záruba
verified
rating uzivatele
30. 10. 2013 22:38:51
Dominik:
Pracuji na javascriptovém pluginu (widgetu) jako rozšíření pro jQuery ($(element).myPlugin()), který ke své práci potřebuje trochu pracovat se serverem, což mu zprostředkuje to API, tohle řešení nebude úplně pro mě, ale i tak dík... možná jsem to blbě vysvětlil
30. 10. 2013 22:38:51
https://webtrh.cz/diskuse/zabezpeceni-api-proti-volani-zvenci#reply960612
token?
30. 10. 2013 22:55:35
https://webtrh.cz/diskuse/zabezpeceni-api-proti-volani-zvenci#reply960611
Jiří Adámek
verified
rating uzivatele
(20 hodnocení)
30. 10. 2013 23:16:18
Přesně tak. Autentizace se provede jednou a pak se již přenáší jen token, který se každým požadavkem mění.
30. 10. 2013 23:16:18
https://webtrh.cz/diskuse/zabezpeceni-api-proti-volani-zvenci#reply960610
Ondřej Záruba
verified
rating uzivatele
30. 10. 2013 23:16:25
Michal Kubíček:
A mohl bys prosím, alespoň nastíniť jak? Protože jakýkoliv generátor tokenu napsaný v javascriptu si "každý" může přečíst jak funguje a tokeny si pak vytvářet sám... nějak mi není jasný jak tohle udělat
30. 10. 2013 23:16:25
https://webtrh.cz/diskuse/zabezpeceni-api-proti-volani-zvenci#reply960609
Ondřej Záruba
verified
rating uzivatele
30. 10. 2013 23:18:26
A mohli by jste prosím nějak nastínit jak? Nějak si to nedovedu představit... Vždycky skončím u toho že cokoliv se v js vygeneruje (tokeny) tak si "každej" přečte
30. 10. 2013 23:18:26
https://webtrh.cz/diskuse/zabezpeceni-api-proti-volani-zvenci#reply960608
t-pack25
verified
rating uzivatele
30. 10. 2013 23:21:56
Áno, prečíta. Ale po jednom použití už stratí platnosť.
30. 10. 2013 23:21:56
https://webtrh.cz/diskuse/zabezpeceni-api-proti-volani-zvenci#reply960607
Ondřej Záruba
verified
rating uzivatele
30. 10. 2013 23:46:22
Díky všem, už vím jak na to ;)
30. 10. 2013 23:46:22
https://webtrh.cz/diskuse/zabezpeceni-api-proti-volani-zvenci#reply960606
node
verified
rating uzivatele
(5 hodnocení)
31. 10. 2013 10:14:43
Good to know.
31. 10. 2013 10:14:43
https://webtrh.cz/diskuse/zabezpeceni-api-proti-volani-zvenci#reply960605
Ondřej Záruba
verified
rating uzivatele
1. 11. 2013 22:44:00
Jen pro úplnost, tady je nástřel toho jak to momentálně mám implementované:
Vytvořím na stránce hidden input do kterého pomocí php vygeneruji token, který zároveň uložím do session a nastavím mu čas expirace. Při každém ajaxovém požadavku se token připojí a následně ověří na straně serveru zda je shodný s tím, který je uložený v session a jestli není "prošlý".
Potom, když server vrací response (v mém případě json) posílám si zpět do aplikace nový token, který přepíše původní v inputu a bude opět platit do dalšího requestu.
Nikdo "zvenčí" tedy nemá možnost token přečíst (za předpokladu že přístup na stránku kde je hidden je nějakým způsobem ošetřen, což už není starost tohoto pluginu) a tudíš nemá možnost používat api
1. 11. 2013 22:44:00
https://webtrh.cz/diskuse/zabezpeceni-api-proti-volani-zvenci#reply960604
Pro odpověď se přihlašte.
Přihlásit