Absjeks Posted June 26, 2009 Report Share Posted June 26, 2009 lūgums izskaidrot veidu, kādā vislabāk lietotājam liegt pieeju tām apakšlapām, kurās drīkst ieiet tikai reģistrēti lietotāji. es ierakstu $_SESSION mainīgajā lietotāja statusu(admin/user) un arī epasta adresi un tad visām lapām hederī ielieku pārbaudi, vai iepriekšminētie ir uzstādīti(isset) un, ja nē, tad header("location: index.php";) es to pats izdomāju, tādēļ jautājums, vai tā dara amatieri vai arī ir ok. kā dara profi? viss jau it kā darbojas, bet vienīgā problēma pie šī ir tā, ka FF soursu jebkurai no tādām lapām rāda kā "404 page not found" erroram, bet exploreris gan parāda sourci īstajai esošajai lapai, kas arī stāv uz mana kompja (xampp). ja noņemu iepriekšminēto pārbaudi, sourci rāda. Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted June 26, 2009 Report Share Posted June 26, 2009 Jā, aptuveni tā arī dara. Vienīgi aiz header('Location: login.php'); parasti vēl pieliek die(); lai garantēti nekāda tālākā izvade nenotiktu. Quote Link to comment Share on other sites More sharing options...
Absjeks Posted June 26, 2009 Author Report Share Posted June 26, 2009 (edited) prieks, ka jau sīkumos domāju, kā profesionāļi:D man ir šādi: <? session_start(); if(!isset($_SESSION['status'],$_SESSION['useremail'])) { header ("Location: /lapa/index.php"); } else { $virsraksts="Laipni lūdzam!"; include("functions.php"); include("definitions.inc.php"); include("header.inc.php"); //un tālāk viss pārējais lapas saturs } ?> </body> </html> viss iet un savu lapu es redzu, bet problēma ir tā, ka FF, kad labāPoga->viewSource man parāda sourci, taču vai nu login lapai, uz kuru es redirektoju vai arī "404 page not found" error lapai. IE man gan parāda īsto. vai man par to vispār uztraukties? sanāk, ka neviens nevar caur FF nevar paskatīties uz skriptu! Edited June 26, 2009 by Absjeks Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted June 26, 2009 Report Share Posted June 26, 2009 Nu, kā jau teicu... vari ielikt vēl rindiņu die() aiz header - tad nevajadzētu rādīt itin neko: session_start(); if(!isset($_SESSION['status'],$_SESSION['useremail'])) { header ("Location: /lapa/index.php"); die(); } Quote Link to comment Share on other sites More sharing options...
Turecky Posted June 27, 2009 Report Share Posted June 27, 2009 Izteikšu arī savas domas, par to skriptu. Viss jau būtu ok, bet es darītu nedaudz savādāk. Vispirms pārbaudītu, vai sesijā mainīgie eksistē, ja eksistē, tad pārbaudām vai mainīgie ir valīdi, ja nav dzenam uz ELSE, ja ir tad izvadam lapas saturu, bet ja mainīgo nav, tad attiecīgi pirmajam IF paskrien garām uz trāpam uz ELSE, kas iztīra sesiju un pabeidz to. Jo tavā gadījumā, ja pieslēdzos un sesijā iebaroju kaut vau tukšus mainīgos tieku pie lapas satura, jo netiek veikta pārbaude vai sesijas dati ir valīdi, domāju, ka tāda pārbaude būtu noderīga. P.S. Vispār kad raksti skriptus ar IF, ELSE vispirms IFos saliec tos variantus, kad ir noteikti dati, bet pie ELSE ja datu nav vai citi gadījumu, jo gadījies, ka vispirms pārbaudam vai dati nav, un beidzam sesiju un pie els atļaujam darboties. Tādā gadījumā skripts nestrādāja kā paredzēts, bet ja saliek, ka pie IF pārbaudam vai dati ir, un ja ir tad vaicam pārējās darbībās, tad iekš ELSE iekrīt visi pārējie gadījumi. Cerams, ka mans skatījums kaut nedaudz palīdzēja! Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted June 27, 2009 Report Share Posted June 27, 2009 Turecky, visumā Tev taisnība. Vienīgi, kā tieši Tu iztēlojies "kaut vai tukšu mainīgo iebarošanu sesijā"? Quote Link to comment Share on other sites More sharing options...
Turecky Posted June 27, 2009 Report Share Posted June 27, 2009 Ar hakerēšanu nenodarbojos, tāpēc nevarēšu atbildēt tieši kā to izdarīt, var būt vienkārši nepareizi izteicos. Galvenā doma bija tāda, ka neskatoties uz to, ka lietotājs ir veiksmīgi ielogojies, kur tiek veikta pārbaude vai lietotājs eksistē, katru reizi, kad tiek pieprasīta lapa, kura ir pieejama tikai reģistrētiem lietotājiem, tomēr vajadzētu pārbaudīt vai tiešām tas ir reģistrēts lietotājs un vai viņa dati netika izmainīti. Savādāk tādā gadījumā nozogam sesiju un daram ar to lietotāju ko gribam. Man liekas, ka tomēr vajadzētu pārbaudīt vai sesijas ID nav mainījies, kā arī vai sesija turpinās no tās pašas IP adreses, jo šajā gadījumā ir vēl divi papildus mainīgie un tomēr IP uzturēt kā svešas lietotāja kompim nebūs vieglākais variants, tad arī drošība būs nedaudz lielāka. Bet par to IF runājot, kad man bija tā problēma beigās sapratu, ka neloģiski biju domājis, jo vispirms tomēr pārbaudam vai mainīgie ir, un ja ir, tad veicam darbības, bet ja neizpildās kāds no variantiem, tad beidzam sesiju, jo savādāk tiek pārbaudīti varianti ja datu nav, bet pēc būtības mums jau interesē vai dati ir, ja to nav tad visi kadījumi ir FALSE, bet tie daži, kas mums der, to ieliekam iekš IF. Nu re, nedaudz laikam atkārtojos, bet cerams, ka kādam manas domas arī palīdzēs, vismaz iesākumā. Quote Link to comment Share on other sites More sharing options...
KarlisBa Posted June 27, 2009 Report Share Posted June 27, 2009 Tad sanāk, lai pilnīgi efektīvi aizsargātos no datu zagšanas un datu rādīšanu tikai autorizētam lietotājam, tad pie autorizēšanās datubāzē saglabājam lietotāja sesijas id, autorizēšanās brīža IP un vajadzīgajā vietā pārbaudām visus šos? Bet vai tik pat efektīvi būs ja šos datus es saglabāšu sesijā nevis db vai starpība nebūs? Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted June 27, 2009 Report Share Posted June 27, 2009 Sesijas mainīgos atkarībā no sesijas uzstādījumiem var glabāt kā DB tā arī failu sistēmā. Quote Link to comment Share on other sites More sharing options...
KarlisBa Posted June 27, 2009 Report Share Posted June 27, 2009 Tad sanāk, ja es izveidoju sesiju $_SESSION['id'] = $idnodb['id']; kur "$idnodb['id']" satur sesijas id info, kura tika ievadīta autorizēšanās laikā un pie pārbaudes veicu darbību $_SESSION['id'] == session_id(); tad, ja kāds gudrītis tiek pie $_SESSION['id'], tad tā pat viņam nekas nesanāk, jo viņa session_id() atšķirās ja? Un tas pats arī ar ip... Quote Link to comment Share on other sites More sharing options...
Turecky Posted June 27, 2009 Report Share Posted June 27, 2009 Ar to sesijas ID var gadīties tā, ka tas tiek uzveidots tāds pats, tāpēc nepieciešams vēl kāds parametrs, kā, piemēram, IP adrese, ko būs pagrūti noemulēt, lai nozagtu sesiju un līdz ar to parastai mājas lapai ar tādu neviens neņemsies. Vienkārši nevaig aizmirst katru reizi pārbaudīt vai sesijas dati sakrīt un vai tie nav mainījušies. Pamanās jau vienmēr atrast caurumus drošības sistēmās, bet tas jau atkal cits stāsts. Quote Link to comment Share on other sites More sharing options...
xPtv45z Posted June 27, 2009 Report Share Posted June 27, 2009 Sessijas id nav nemaz jēgas pārbaudīt, jo tas būs tāds pats. Ja jau es nozogu kāda sessijas id un ar to slēdzos, tad man arī izveido viņa sessiju, kura saturēs to pašu id. Quote Link to comment Share on other sites More sharing options...
endrju Posted June 27, 2009 Report Share Posted June 27, 2009 Sessijas id nav nemaz jēgas pārbaudīt, jo tas būs tāds pats. Ja jau es nozogu kāda sessijas id un ar to slēdzos, tad man arī izveido viņa sessiju, kura saturēs to pašu id. Normāli vispār būtu sessijas ID uz noteiktu skaitu hitu pārģenerēt. Paranoidālākie to dara pie katra hita. Quote Link to comment Share on other sites More sharing options...
xPtv45z Posted June 28, 2009 Report Share Posted June 28, 2009 Es neredzu arī īsti jēgu pārģenerēt. :) Tas, man liekas, radīs tikai papildus problēmas. Jo es to redzu tā: - Tu izdari pieprasījumu, tev izveido sessiju - Es nozogu sessijas id, izdaru pieprasījumu ar to, man uzģenerē jaunu, veco iznīcinot. - Tu uztaisi nākamo pieprasījumu un no tavas sessijas nekas vairs nav palicis. :) - Es turpinu darboties ar taviem datiem un varu vairāk neuztraukties par to, ka tu pieprasījumu varētu izdarīt ātrāk un sessija tiktu iznīcināta. Quote Link to comment Share on other sites More sharing options...
endrju Posted July 1, 2009 Report Share Posted July 1, 2009 Es neredzu arī īsti jēgu pārģenerēt. :) Tas, man liekas, radīs tikai papildus problēmas. Jo es to redzu tā: - Tu izdari pieprasījumu, tev izveido sessiju - Es nozogu sessijas id, izdaru pieprasījumu ar to, man uzģenerē jaunu, veco iznīcinot. - Tu uztaisi nākamo pieprasījumu un no tavas sessijas nekas vairs nav palicis. :) - Es turpinu darboties ar taviem datiem un varu vairāk neuztraukties par to, ka tu pieprasījumu varētu izdarīt ātrāk un sessija tiktu iznīcināta. Kad pamēģināsi to implementēt, sapratīsi. Sessijas ID jau vairs nav derīgs, kad lapa ir atvērta. Respektīvi, nav jēgas pat ja nozog to id. 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.