Peeter Posted July 5, 2007 Report Share Posted July 5, 2007 Sveiki. Veidoju vienu mazu datu bāzi un domāju kā uztaisīt autorizēšanās sistēmu. Pēc ielogošanās pieslēdzamies datu bāzei un pārbaudam vai eksistē ievadītais lietotāja vārds. Ja lietotāja vārds eksistē paņemam no datubāzes lietotāja paroli(kas tur stāv ar md5 sakodēta) un salīdzinam ar ievadīto paroli. Ja parole un lietotāja vārds ir pareizi, izveidojam sesiju ar mainīgo kurs apzīme, ka lietotājs ir veiksimi ielogojies. Lietotājam pārslēdzoties uz citu lapu pārbaudam vai eksistē sesijas mainīgais(atļaujam pieeju lapai vai redirektējam uz login lapu). Vai šāda sistēma būtu pietiekami droša? Varbūt ir kādi ieteikumi, komentāri labojumi? Link to comment Share on other sites More sharing options...
andrisp Posted July 5, 2007 Report Share Posted July 5, 2007 Tas ir pamatu pamats. Lai būtu vēl drošāk, tad vari piesaistīt sesiju IP adresei, pārlūkam (ģenerē no user-agent hashu, kuru pēc tam visas sesijas laikā čeko vai ir tas pats). Palasi par: http://en.wikipedia.org/wiki/Session_fixation http://shiflett.org/articles/session-fixation http://en.wikipedia.org/wiki/Session_poisoning http://shiflett.org/articles/session-hijacking PS. Neaizmirsti par visu ienākošo datu filtrāciju arī. Link to comment Share on other sites More sharing options...
v3rb0 Posted July 5, 2007 Report Share Posted July 5, 2007 (edited) tik pat labi vari uzreiz usera vārdu un paroles hešu salīdzināt vienā piegājienā. sessijā var likt uzreiz visus usera datus, jo tie noderēs vairāk kā tikai mainīgais vai ir ielogojies. pie visa tā kas iepriekš, vēl login formai var pielikt klāt captcha un kaut kādu useru lockošanu, ja šis pārāk daudz nepareizi paroli raksta. paša logina uzlikšana uz ssl ar nāks tikai doršībai par labu. bet vispirms jāskatās cik apdraudēta tā sistēma būs, ja nekas īpaši, pietiek ar tādu kā teici sākumā un nav vērts aizrauties ar paranojisku drošību kur to nevajag :) Edited July 5, 2007 by v3rb0 Link to comment Share on other sites More sharing options...
Peeter Posted July 5, 2007 Author Report Share Posted July 5, 2007 Izskatās, ka esmu uz pareiza ceļa. Sistēmu principā lietos apmēram 20 firmas darbinieku un pieļauju, ka nekad netiks mēģināta uzlauzt. Jautājums jau vairāk manas izglītošanās sakarā, lai turpmāk vajadzības gadījumā rakstītu drošākas datu bāzes. Paldies andrisp par linkiem. laba lasāmviela. Bet teiksim, ja nopietns speciālists mēģinātu iegūt pieeju aprakstītai sistēmai vai viņam tas izdotos. Pat ja nefiltrējam ienākošos datus nevaru iedomāties kā to varētu izdarīt. Link to comment Share on other sites More sharing options...
Grey_Wolf Posted July 5, 2007 Report Share Posted July 5, 2007 Bet teiksim, ja nopietns speciālists mēģinātu iegūt pieeju aprakstītai sistēmai vai viņam tas izdotos. Ja neizmaciisi (neizdreseesi) Blondiini/gramatvedi... tad izdoshaanaas ir par 80% ... ieej kaadaa ofisaa un pakokjitee ar Sekretaari + paskaties kas vinjai pilipinaats uz Monitora ... I viisa maaksla.... (sho variantu esmu redzeejis ~~~20% Lielo Firmu...) Link to comment Share on other sites More sharing options...
NiTrino Posted July 5, 2007 Report Share Posted July 5, 2007 Vari vel pie katras lapas ielades chekot IP adresi, kas ir iestatita sessijaa, ielogojoties. Ja nesakrit - met ara. Tas varetu palidzet ja kaadam izdodas nozagt sessijas id un mejinat to pielietot. Link to comment Share on other sites More sharing options...
andrisp Posted July 5, 2007 Report Share Posted July 5, 2007 (edited) Pat ja nefiltrējam ienākošos datus nevaru iedomāties kā to varētu izdarīt. http://en.wikipedia.org/wiki/Sql_injection http://en.wikipedia.org/wiki/XSS sessijā var likt uzreiz visus usera datus Paroli gan nevajag glabāt sesijā. Sesijā nevajag glabāt nekādus datus, kurus kāds var ļaunprātīgi izmantot. Tas attiecas īpaši uz shared hostingiem, bet tavā gadijumā tas var nebūt tik būtiski. PS. NiTrino, iesaku izlasīt visu thread'u pirms raksti atbildi ;). Edited July 5, 2007 by andrisp Link to comment Share on other sites More sharing options...
NiTrino Posted July 5, 2007 Report Share Posted July 5, 2007 tnx, pamaniju, sorry :) Link to comment Share on other sites More sharing options...
Peeter Posted July 5, 2007 Author Report Share Posted July 5, 2007 Jautājums. Ko tad īsti glabāt sesijā. Lietotāja vārdu, ip adresi statusu ka ir ielogojies un pie lapas ielādes pārbaudīt statusu un ip adresi? Link to comment Share on other sites More sharing options...
andrisp Posted July 5, 2007 Report Share Posted July 5, 2007 Jā, es parasti tā arī daru. Link to comment Share on other sites More sharing options...
nemec Posted July 5, 2007 Report Share Posted July 5, 2007 prieksh kam sessijaa glabaat ip adresi? vai tad to nenolasa katru reizi. Link to comment Share on other sites More sharing options...
Paulinjsh Posted July 5, 2007 Report Share Posted July 5, 2007 nemec, ja tekošā ip adrese nesakrīt ar sesijā ierakstīto, tad iespējams ir nosperta sesija. Vēl var papildus glabāt user-agent Link to comment Share on other sites More sharing options...
Exzo Posted July 6, 2007 Report Share Posted July 6, 2007 Es šo lietu daru tā, ka klienta pusē tiek sahašoti kopā username, parole un katram ielogošanās meģinājumam unikāls challenge hash. Serverim tiek nosūtīts tikai šis vienīgais sha1 hash. Sesijai protams piesaistu IP+useragetnt hash (tā ir daudz īsāk) un sesijas expire laiku, kas ir piemēram max 20 minūtes kopš iepriekšējās darbības. Sesijas ID tiek nomainīts pie katras darbības, tāka nosperot sesiju, vēl ir jāsakrīt 3-4 faktoriem, lai varētu viņu izmantot. Var jau būt, ka kaut kam vienkāršam tas ir pārāk sarežģīti, bet toties var mierīgi gulēt :) Link to comment Share on other sites More sharing options...
nemec Posted July 6, 2007 Report Share Posted July 6, 2007 kaada jeega paarluuku glabaat? ja jau taa vajag, var pielabot headerus. ar ip adresi un hashu pietiek. ja vajadzees salasiit paroles, tad ir daudz humanaaki risinaajumi. kaa daru es. man ir tabula `session` kur es glabaju `id` - sesijas numurs, ja vajag piesaistiit kam citam, `hash` - katram savu hashu, `ip` - ip adrese, `updated` - peedeejo reizi atjaunots. hashu glabaaju sessijaa, urlaa vai veel sazin kur. tad ar pieprasiijumu mekleeju ierakstu ar ip adresi + hashu + laiku, neviss uzticos sessijaam. un pie tam es uzskatu, ka php vajadzeeja pashiem paruupeeties lai sessijas vareetu lietot tikai viens kompis, nevis arii citi (par droshiiibu). prieksh manis sessijas ir taads maiss, ar kura paliidziibu var saglabaat mainiigos uz lapas lietoshanas laiku. neviss glabaat tur kaut ko svariigaaku: username, paroles, mailus, vai veel ko taadu. Link to comment Share on other sites More sharing options...
Kavacky Posted July 6, 2007 Report Share Posted July 6, 2007 A lai tas džeks uzmin labojot, kāda man versija kuram pārlūkam uzlikta. Link to comment Share on other sites More sharing options...
Recommended Posts