Jump to content
php.lv forumi

piespiest lietotāju ielogoties


Absjeks

Recommended Posts

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.

Link to comment
Share on other sites

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 by Absjeks
Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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ā.

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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...

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...