Zabezpečenie REST API rubrika: Folklór
2
PeterBocan
položil/-a 2.1.2015
Ahoj, mám na Vás otázku: ako zabezpečiť kriticky dôležité REST API? Klientská aplikácia (NodeJS) volá REST API a predáva mu kritické informácie. Bude na to SSL stačiť, alebo mám použiť napr. OAuth?
Ďakujem za odpoveď.
odkaz
4
bazo
odpověděl/-a 2.1.2015
public a private key, hash_hmac podpisane requesty privatnym klucom, overovanie platnosti timestampu + nonce
ssl
tento system pouziva napr amazon a myslim, ze uz nic lepsie nikto nevymyslel
Komentáře
- v6ak : Technicky ta odpověď vypadá OK. Asi je to správná odpověď, ale ne dobrá odpověď. Implementovat si vlastní kryptografii musí mít důvod. — 2.1.2015
- PeterBocan : No to by šlo, len by som s vlastným návrhom zadrbal celkom slušné množstvo času, ktorý by sa dal využiť inde. — 2.1.2015
- bazo : asi som to napisal moc skratkovito. o ziadnu vlastnu kryptografiu nejde. aplikacii/klientovi co ma pristupovat na api pridelis nejaky verejny identifikator/token moze byt aj email napr a privatn kluc/heslo. do request dat pridas aktualny timestamp, z request dat vytvoris string, tento podpises hash_hmac funkciou s tym privatnym klucom, do url sa prida ten timestamp a podpis. na serveri prijmes data, spravis string takym istym sposobom ako na klientovi, overis podpis takisto ako si ho vytvaral. porovnas timestamp ci je v povolenej tolerancii od serveroveho casu. standarny sposob pouzivany mnohymi api, nevymyslel som to ja, ale odkukal od toho amazonu. robota na max 1h, kym tu cakas na nejaku odpoved tak si to uz mohol mat nakodene — 3.1.2015
- bazo : tuna je to obsirnejsie popisane http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-au... alebo tu http://restcookbook.com/Basics/loggingin/ — 3.1.2015
- v6ak : TLS by mělo být odolné replay attacku, řešit nonces a timestamp by nemělo byt nutné. (Jakkoli je to další linie, která může případného útočníka zastavit.) Teoreticky i HMAC je zbytečný, mohl by stačit náhodný token. — 3.1.2015
- v6ak : A varianta bez TLS (= nástupce SSL) už je implementace vlastního kryptoprotokolu, před čímž varuju. Možné to je, ale zdaleka to není taková sranda. — 3.1.2015
- chmel : dá se to vyzkoušet např na sha1-online.com . V Ruby: Digest::SHA1.hexdigest( text ) - nemělo by to jít zpětně dekriptit, ale z konkrétního textu to udělá vždy stejný výstup. Takže když předáte druhé straně info co bude obsahem parametru, mělo by to být zabezpečené... — 9.1.2015
Pro zobrazení všech 3 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře