Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

sesije i cookiji u kombinaciji, problem sa vremenom

[es] :: PHP :: sesije i cookiji u kombinaciji, problem sa vremenom

[ Pregleda: 3827 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

goran33
Goran Milic
Beograd

Član broj: 6040
Poruke: 46
*.bitsyu.net

ICQ: 170738591


Profil

icon sesije i cookiji u kombinaciji, problem sa vremenom18.11.2002. u 16:44 - pre 233 meseci
Imam stranu index.php sa session_start() i sa formom u koju se unosi logname i pwd. Varijable se šalju na fajl pass.php (ACTION="pass.php?<?=SID?>" METHOD=POST).
U pass.php se proverava da li je forma prazna,ok ili pogrešno popunjena. Ako je prazna, prebacuje se na index.php i generiše grešku 1, ako je ok
ide na stranu admin i pravi cookie koji "traje" 10 minuta, a ako su podaci pogrešni, vraća na index i generiše grešku 2...

Code:

ovo je pass.php

<? 
session_start();
$connection = mysql_connect("localhost", "a", "b"); 
$db = mysql_select_db("a", $connection);
if ($logname=='' or $pwd==''){  
Header("Location: index.php");  
       $error = 1;  
       session_register("error");
       exit();  
}  
if (@$logname && @$pwd) {  
    $res = @mysql_query("SELECT logname,pwd FROM root WHERE logname='$logname' AND pwd='$pwd'");  
    if(@mysql_num_rows($res) != 0) {  
        Header("Location: admin.php");  
        session_register("logname");  
        session_register("pwd");       
setcookie("time",$PHPSESSID,time()+1200,"/");  
        }  
else {   
Header("Location: index.php");  
        $error = 2;  
        session_register("error"); 
        exit(); 
}  
    }  
?>


Na svim "zaštićenim" stranama prvi red je <? include ("check.php");?>, i u slučaju da prođe 10 minuta, generiše se greška 3 i vraća se na
index.php...

Code:

ovo je check.php

<?  
session_start();  
$connection = mysql_connect("localhost", "a", "b"); 
$db = mysql_select_db("a", $connection);
  $res = @mysql_query("SELECT logname FROM root WHERE logname='$logname' AND pwd='$pwd'");  
     if(@mysql_num_rows($res) == 0) {  
     Header("Location: index.php");  
        $error = 2;  
        session_register("error");
        exit();  
       }  
$time=$HTTP_COOKIE_VARS["time"];  
$vreme=strlen($time);  
     if($vreme<1) {  
     Header("Location: index.php");  
        $error = 3;  
        session_register("error");
        exit();  
        }  
setcookie("time",$PHPSESSID,time()+1200,"/");  
?>


Problem je u tome sto mi ovo kod kuće na lokalu radi super, a na netu mi stalno vraća 3, tj. sesija je istekla...
Šta mi predlažete da uradim? Može li da se odredi dužina trajanja sesije bez upotrebe kukija,tj. Mogu li sve to isto da uradim bez njih?

Ovo je izvod iz php configa vezan za sesije, inace verzija je 4.1.2 i register_globals je On, ako to ima neke veze...

Directive - Local Value - Master Value
session.auto_start - On - On
session.cache_expire - 180 - 180
session.cache_limiter - nocache - nocache
session.cookie_domain - no value - no value
session.cookie_lifetime - 0 - 0
session.cookie_path- / - /
session.cookie_secure - Off - Off
session.entropy_file - no value - no value
session.entropy_length - 0 - 0
session.gc_maxlifetime - 1440 - 1440
session.gc_probability - 1 - 1
session.name - PHPSESSID - PHPSESSID
session.referer_check - no value - no value
session.save_handler - files - files
session.save_path - /tmp - /tmp
session.serialize_handler - php - php
session.use_cookies - On - On


Hvala unapred...
.
.
.

[Ovu poruku je menjao Go! X dana 23.11.2002. u 00:55 GMT]
 
Odgovor na temu

goran33
Goran Milic
Beograd

Član broj: 6040
Poruke: 46
*.bitsyu.net

ICQ: 170738591


Profil

icon Re: Za Vas koji znate o sesijama...18.11.2002. u 20:15 - pre 233 meseci
P.S. Pogledao sam sve poruke na forumu vezane za sesije, ali i dalje ne znam da li je ovo dobro i zasto ne radi...
 
Odgovor na temu

mikis
Mihailo Stefanović
Beograd

Član broj: 1825
Poruke: 767
*.verat.net

Sajt: www.mikis.org


Profil

icon Re: Za Vas koji znate o sesijama...18.11.2002. u 21:00 - pre 233 meseci
Bez dublje analize (mnogo mi se spava :) ) evo jedne pretpostavke: možda ti se vreme na lokalnoj mašini i vreme na serveru razlikuju? Npr. vreme na serveru je u drugoj vremenskoj zoni pa ti kad uporediš dobiješ npr. da je sesija istekla pre sat vremena? Način da to rešiš bez upotrebe kukija je korišćenjem <meta http-equiv=Refresh content="600;url=index.php">

Na još nešto bih ti skrenuo pažnju: imaš ogromnu potencijalnu sigurnosnu rupu u kodu, pomoću koje je veoma lako da neko postane admin tvog servera. U delu gde proveravaš postoji li user i pass u bazi:

SELECT logname,pwd FROM root WHERE logname='$logname' AND pwd='$pwd'

Recimo da ja kao logname unesem:
admin' --
a kao pass bilo šta. Izvršiće se upit:

SELECT logname,pwd FROM root WHERE logname='admin' -- AND pwd='bilosta';

Pošto je sve iza -- u SQL naredbi komentar, mene će praktično ulogovati kao admina i bez passworda! Rešenje je da pre ovog Select upita staviš:

$logname = addslashes($logname);
$pwd = addslashes($pwd);

Možda si to već i uradio u prethodnom delu koda, u tom slučaju ovo ostaje kao upozorenje ostalima :)
 
Odgovor na temu

goran33
Goran Milic
Beograd

Član broj: 6040
Poruke: 46
*.bitsyu.net

ICQ: 170738591


Profil

icon Re: Za Vas koji znate o sesijama...18.11.2002. u 22:04 - pre 233 meseci
E, dobro je sto može i bez kukija, radi sa meta tagom...
A što se tiče sigurnosne rupe, probao sam i ne može tek tako da se uđe...
Ako uneseš samo tačni logname, a prazan pwd ne može zbog:

if ($logname=='' or $pwd==''){
Header("Location: index.php");
$error = 1;

,a ako uneseš tačan logname, a pogrešan pwd, svakako nećeš ući, jer i jedno i drugo moraju da budu tačni... Probao sam... Ne može baš zbog:

SELECT logname FROM root WHERE logname='$logname' AND pwd='$pwd'

A i jedan i drugi su case sensitive...

Hvala u svakom slučaju...
 
Odgovor na temu

mikis
Mihailo Stefanović
Beograd

Član broj: 1825
Poruke: 767
*.verat.net

Sajt: www.mikis.org


Profil

icon Re: Za Vas koji znate o sesijama...19.11.2002. u 01:01 - pre 233 meseci
Ne znam da li si me razumeo. Kao user unesi:

admin' --

znači, ime superusera, pa apostrof, razmak i dve crte. Kao pwd unesi bilo šta. Kad se ovo interpretira upit postaje:

... WHERE logname='admin' -- ' AND pwd...

što znači da će sve iza onoga logname='admin' tretirati kao komentar, odnosno ignorisati! Ako nije tako, tj. ako si koristio addslashes kod validacije podataka unetih u formu, super, samo ovo je jedna od čestih rupa u PHP skriptovima.
 
Odgovor na temu

goran33
Goran Milic
Beograd

Član broj: 6040
Poruke: 46
*.bitsyu.net

ICQ: 170738591


Profil

icon Re: Za Vas koji znate o sesijama...19.11.2002. u 02:09 - pre 233 meseci
Pa i dalje ne može da se uđe...
Poslao sam ti link, jesi ušao???
 
Odgovor na temu

mikis
Mihailo Stefanović
Beograd

Član broj: 1825
Poruke: 767
*.verat.net

Sajt: www.mikis.org


Profil

icon Re: Za Vas koji znate o sesijama...19.11.2002. u 15:11 - pre 233 meseci
Ne :) Dobro je, izgleda da su to sredili u nekoj od novijih verzija PHP-a. U međuvremenu sam se malo razdremao ;) i pokušao i sam i izgleda da je sređeno, tj. da automatski bekslešuje unete stringove. Večeras ću još malo da ti hakerišem po sajtu :)
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Za Vas koji znate o sesijama...19.11.2002. u 15:43 - pre 233 meseci
Upit će biti: SELECT logname FROM root WHERE logname='admin' ?? i kako sa tim možeš da oboriš sistem??? Pre toga je odradjen mysql_select_db(mojabaza.$dblink)... ne kapiram.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

chupcko
Ima
Beograd

Član broj: 5560
Poruke: 1138

Sajt: www.google.com


+63 Profil

icon Re: Za Vas koji znate o sesijama...19.11.2002. u 15:57 - pre 233 meseci
Sto se tice sigurnosne rupe:

Ako je magic_quotes_gpc podeseno na On, onda ce ....

pise sve u dokumentaciji, jel tako ....

CHUPCKO
 
Odgovor na temu

CONFIQ
♫♪♥♪♫

Član broj: 4218
Poruke: 1994
*.red.bezeqint.net

ICQ: 82327428


+10 Profil

icon Re: Za Vas koji znate o sesijama...19.11.2002. u 15:59 - pre 233 meseci
Citat:
mikis:
Ne :) Dobro je, izgleda da su to sredili u nekoj od novijih verzija PHP-a.


Hum... ja mislim da je to do instaliranja PHP-a,nema nikakve veze sa verzijom!

naime, ako je --enable-magic-quotes uključeno i opcije
magic_quotes_(gpc,runtime,sybase) onda te opcije automatski izdvajaju polunavodnik,navodnik i obrnutu crtu.... tako da nema nikakve veze sa verzijom nego sa instaliranjem
 
Odgovor na temu

goran33
Goran Milic
Beograd

Član broj: 6040
Poruke: 46
*.bitsyu.net

ICQ: 170738591


Profil

icon Re: Za Vas koji znate o sesijama...19.11.2002. u 22:27 - pre 233 meseci
Citat:
Go! X:
Upit će biti: SELECT logname FROM root WHERE logname='admin' ?? i kako sa tim možeš da oboriš sistem??? Pre toga je odradjen mysql_select_db(mojabaza.$dblink)... ne kapiram.


Apsolutno se slažem sa ovim...



Ne može da se uđe!!!
By the way - magic_quotes_gpc = On! To nema veze... Jednostavno, moraju i logname i password da se tačno unesu...

 
Odgovor na temu

CONFIQ
♫♪♥♪♫

Član broj: 4218
Poruke: 1994
*.red.bezeqint.net

ICQ: 82327428


+10 Profil

icon Re: Za Vas koji znate o sesijama...19.11.2002. u 22:48 - pre 233 meseci
Citat:
By the way - magic_quotes_gpc = On! To nema veze... Jednostavno,


I tekako da ima veze!!!

On moze da ukuca ovo: neshto';drop table bzvze i da ti izbrishe ceo table (naravno moze bilo shta da ukuca posle ; )
 
Odgovor na temu

mikis
Mihailo Stefanović
Beograd

Član broj: 1825
Poruke: 767
*.verat.net

Sajt: www.mikis.org


Profil

icon Re: Za Vas koji znate o sesijama...20.11.2002. u 02:15 - pre 233 meseci
Citat:
Go! X:
Upit će biti: SELECT logname FROM root WHERE logname='admin' ?? i kako sa tim možeš da oboriš sistem??? Pre toga je odradjen mysql_select_db(mojabaza.$dblink)... ne kapiram.


Ne baš da oboriš sistem :) Ovaj upit će ti vratiti jedan red iz baze (username i pass), pod uslovom da si pogodio username; kod proverava da li je broj vraćenih redova iz baze veći od 0, i ako jeste loguje te kao tog usera. Šta ćeš dalje da radiš je na tebi :)

Mada magic quotes u ovom primeru spašava slučaj, ipak nije loše primeniti staru dobru praksu i preimenovati administratorski nalog u nešto opskurno :)
 
Odgovor na temu

goran33
Goran Milic
Beograd

Član broj: 6040
Poruke: 46
*.bitsyu.net

ICQ: 170738591


Profil

icon Re: Za Vas koji znate o sesijama...20.11.2002. u 10:23 - pre 233 meseci
Da je upit samo takav to ne bi bio problem, ali tu ima i AND, znači moraš da pogodiš i user i passw...

A što se tiče :

"On moze da ukuca ovo: neshto';drop table bzvze i da ti izbrishe ceo table"

I da je magic quotes isključen, ne bi moglo da se uđe jer je veličina polja koje se unosi ograničena na 10 karaktera... Ne znam...
Mada uopšteno, ako tako može da se uđe onda ne vidim svrhu zašto bi se u nekom slučaju i stavljalo magic quotes na Off, ako toliko narušava sigurnost...
 
Odgovor na temu

CONFIQ
♫♪♥♪♫

Član broj: 4218
Poruke: 1994
*.red.bezeqint.net

ICQ: 82327428


+10 Profil

icon Re: Za Vas koji znate o sesijama...20.11.2002. u 12:09 - pre 233 meseci
A ajde mi daj URL baš oću nešto da probam.
Ako može?
 
Odgovor na temu

CONFIQ
♫♪♥♪♫

Član broj: 4218
Poruke: 1994
*.red.bezeqint.net

ICQ: 82327428


+10 Profil

icon Re: Za Vas koji znate o sesijama...20.11.2002. u 12:18 - pre 233 meseci
Citat:
goran33:
Mada uopšteno, ako tako može da se uđe onda ne vidim svrhu zašto bi se u nekom slučaju i stavljalo magic quotes na Off, ako toliko narušava sigurnost...


I ja se pitam zašto bi isključivao magic_quotes_gpc ???

Mada imaš 3 različite magic_quotes_*
najznačajniji je magic_quotes_gpc (GET/POST/COOKIE) njega uključi a magic_quotes_runtime i magic_quotes_sybase ne moraš da uključuješ

Citat:
ne bi moglo da se uđe jer je veličina polja koje se unosi ograničena na 10 karaktera...


Misliš u HTML-u??? stavio si na <input max=10 ??? Pa ja mogu da izmenim HTML da stavim max=1000 i da napishem kolko hoću :P
 
Odgovor na temu

chupcko
Ima
Beograd

Član broj: 5560
Poruke: 1138

Sajt: www.google.com


+63 Profil

icon Re: Za Vas koji znate o sesijama...21.11.2002. u 07:43 - pre 233 meseci
Eh, nemoj nikada klijentu dopustati da te stiti, curl je majka.

CHUPCKO
 
Odgovor na temu

[es] :: PHP :: sesije i cookiji u kombinaciji, problem sa vremenom

[ Pregleda: 3827 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.