Saugumas. I dalis

Posted by Saulius Grigaitis 26/04/2007 at 22h15

Sveiki! Pradedame ciklą užrašų apie saugumą. Dauguma programuotojų, ypač nepatyrusių, lipa ant vieno ir to pačio grėblio, t.y. neapsaugo kritinių saugumo atžvilgiu objekto atributų nuo neleistino jų pakeitimo. Tarkime programuojama sistema yra gana paprasta ir naudojamas labai lengvas autorizacijos mechanizmas, tarkime klasė "Vartotojas" turi atributą "admin". Pagal šį atributą sistema ir autorizuoja vartotoją. Viskas atrodytų lyg ir gerai, vartotojo registracijos formoje nėra laukelio "admin", tad vartotojas pats negali pasikelti sau privilegijų, migracijoje "admin" laukelio reikšmė nustatytą "false" nutylint. Net ir po "Vartotojo" egzemplioriaus sukūrimo "create" "action'e", jo "admin" reikšmė nustatoma "false". Tačiau pamirštama tai padaryti "Vartotojo" egzemplioriaus atnaujinimo "action'e". Įsivaizduojame blogiausią situaciją: kažkas sužino apie atributą "admin". Tada supakuoja parametrus ir pasiunčia "POST" užklausą į "update" actioną. Pavyko! Dabar vartotojas turi administratoriaus privilegijas... Bene paprasčiausias būdas apsisaugoti nuo tokio tipo klaidų - naudoti "protected" atributus: class User < ActiveRecord::Base attr_protected :admin end

no comments | no trackbacks

Comments

Trackbacks

Use the following link to trackback from your own site:
http://www.rubyonrails.lt/trackbacks?article_id=9

(leave url/email »)

reCaptcha

   Comment Markup Help Preview comment