briit Posted December 1, 2009 Report Share Posted December 1, 2009 Sveiki! Es veidoju vienu vienkāršu REST API un esmu ticis līdz autentifikācijai: pieprasījumus, kas izmaina datus manā galā, es atļaušu veikt tikai uzticamiem cilvēkiem. Tā kā projekts ir orientēts uz vienkāršību (manā galā), tāpēc es nevēlos ieviest kaut kādu vairāku soļu autentifikācijas procesu kāds ir OpenIDam vai oAuth, ne arī pašus šos risinājumus - gribu vienkāršu un efektīvu. Mana ideja ir: Lietotājam ir unikāls shared secret, ko viņš ir ieguvis reģistrējoties pie manis. Šis secret netiek sūtīts pa tīklu, bet katrs pieprasījums tiek "parakstīts" - md5($shared_secret.$current_timestamp), tiek nosūtīts arī pats taimstamps - ja tas atšķirās vairāk kā par $delta, tad ir nederīgs pieprasījums. Lielākā atšķirība no spicajiem autentifikācijas formātiem ir, ka shared secret, ar ko parakstīt pieprasījumu, ir mūžīgs, nevis noskaidrojams sesijas sākumā, kas krietni sarežģī gan izstrādi manā galā, gan programmētājam, kas darbosies ar manu API, bet ieguvumu neredzu. Un jautājums: vai ar šādu drošību ir pietiekami, lai zinātu, ka Jānis ir tas pats Jānis nevis Hakeris Pēteris ? Vai nav kādu acīmredzamu ierobežojumu, ko es nespēju saskatīt ? (Ar nosacījumu, ka shared secret ir drošībā) Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted December 1, 2009 Report Share Posted December 1, 2009 Idejiski jā, vienīgi md5 vietā labāk hash_hmac() un "parakstīt" ne tikai timestamp bet arī visus datus - hash_hmac('sha256',$dati.$timestamp,$secret,false); Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.