/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
forkerte data sniger sig ind i session
Fra : Mads Lie Jensen


Dato : 30-11-03 15:48

Hej

Jeg har et meget mærkeligt problem.

Eet sted i min kode hiver jeg et id-nummer ud fra en database, (et
bruger-id) og gemmer der i $_SESSION['id']. Det er kun eet sted i
samtlige filer på det site hvor der gemmes noget i $_SESSION['id']

Alligevel sker det nogle få gange at $_SESSION['id'] pludselig bliver
overskrevet med noget andet.

Når den kører på min server optræder fejlen aldrig -men på serveren hvor
det kører i drift, sker det nogle få gange - jeg kan ikke finde noget
mønster i hvornår det sker og det sker langt fra hver gang man bruger
siden - men det er altid den samme side det sker på.

Der hvor løsningen fejler, kører den på en apache2 - kan det være det?
Eller kan det være noget med indstillingerne af php? Rettigheder på
filerne måske?


--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
Kig også ind på http://hjoerringnyplanteskole.dk/

 
 
Tonni Aagesen (30-11-2003)
Kommentar
Fra : Tonni Aagesen


Dato : 30-11-03 17:40

Mads Lie Jensen wrote:

> Der hvor løsningen fejler, kører den på en apache2 - kan det være det?
> Eller kan det være noget med indstillingerne af php? Rettigheder på
> filerne måske?

Når du ikke selv overskriver sessions, må det jo være andre, der gør
det. Har du mulighed for at lave dit eget tmp/ og smide sessions deri?

Hvis du har ftp adgang et niveau under webscope, kan du muligvis,
afhængig af apache/php opsætning, oprette en htaccess-fil med følgende:

------------- .htaccess begin -------------------

php_value session.save_path /sti/til/mit/eget/tmp

------------- .htaccess end ---------------------


Mvh
Tonni


Mads Lie Jensen (30-11-2003)
Kommentar
Fra : Mads Lie Jensen


Dato : 30-11-03 17:53

On Sun, 30 Nov 2003 16:40:04 +0000, Tonni Aagesen
<use.my@signature.please> wrote:

>> Der hvor løsningen fejler, kører den på en apache2 - kan det være det?
>> Eller kan det være noget med indstillingerne af php? Rettigheder på
>> filerne måske?
>
>Når du ikke selv overskriver sessions, må det jo være andre, der gør
>det. Har du mulighed for at lave dit eget tmp/ og smide sessions deri?
>
>Hvis du har ftp adgang et niveau under webscope, kan du muligvis,
>afhængig af apache/php opsætning, oprette en htaccess-fil med følgende:
>
>------------- .htaccess begin -------------------
>
>php_value session.save_path /sti/til/mit/eget/tmp
>
>------------- .htaccess end ---------------------

Jeg har root-adgang til serveren, så jeg kan gøre som det passer mig.

Dit forslag vil da blive afprøvet, jeg tror bare ikke det er det.

Mit script indsætter en post i en database, et af felterne fyldes ud med
værdien fra $_SESSION['id'] - når posten er indsat redirectes til en
oversigts-side, og nu er $_SESSION['id'] pludselig blevet lig
id-nummeret på den post som er blevet indsat i databasen. (Databasen er
mysql og tilgåes med Pear DB, og id-nummeret til databasen er ikke
auto-increment, men hentes via pear DB's sequences.)

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
Kig også ind på http://hjoerringnyplanteskole.dk/

Allan E (04-12-2003)
Kommentar
Fra : Allan E


Dato : 04-12-03 10:29

On Sun, 30 Nov 2003 17:53:01 +0100, Mads Lie Jensen
<mads@gartneriet.dk> wrote:

>On Sun, 30 Nov 2003 16:40:04 +0000, Tonni Aagesen
><use.my@signature.please> wrote:
....
>Mit script indsætter en post i en database, et af felterne fyldes ud med
>værdien fra $_SESSION['id'] - når posten er indsat redirectes til en
>oversigts-side, og nu er $_SESSION['id'] pludselig blevet lig
>id-nummeret på den post som er blevet indsat i databasen. (Databasen er
>mysql og tilgåes med Pear DB, og id-nummeret til databasen er ikke
>auto-increment, men hentes via pear DB's sequences.)

Du er sikker på at du ikke sætter $id nogen steder i din kode?? Hvis
du har slået register_globals til i din PHP opsætning vil det være en
reference til din session variabel, når du først har registreret din
sessionvariabel!
fx:
<?
$_SESSION['id'] = "foo";
$id = "bar";

print "->".$_SESSION['id'];
?>
vil skrive :
->bar


Mvh Allan E

Mads Lie Jensen (04-12-2003)
Kommentar
Fra : Mads Lie Jensen


Dato : 04-12-03 19:38

On Thu, 04 Dec 2003 10:28:31 +0100, Allan E <allan_ege@hotmail.com>
wrote:

>>Mit script indsætter en post i en database, et af felterne fyldes ud med
>>værdien fra $_SESSION['id'] - når posten er indsat redirectes til en
>>oversigts-side, og nu er $_SESSION['id'] pludselig blevet lig
>>id-nummeret på den post som er blevet indsat i databasen. (Databasen er
>>mysql og tilgåes med Pear DB, og id-nummeret til databasen er ikke
>>auto-increment, men hentes via pear DB's sequences.)
>
>Du er sikker på at du ikke sætter $id nogen steder i din kode?? Hvis

Jeg sætter $id i den kode hvor det går galt ...

>du har slået register_globals til i din PHP opsætning vil det være en
>reference til din session variabel, når du først har registreret din
>sessionvariabel!
>fx:
><?
>$_SESSION['id'] = "foo";
>$id = "bar";
>
>print "->".$_SESSION['id'];
>?>
>vil skrive :
>->bar

Det lyder som en rigtig forklaring - bortset fra at register_globals er
Off på serveren hvor denne fejl kommer - og også på min egen server hvor
jeg endnu ikke er stødt på fejlen.

Det som undrer (irriterer) mig mest er dog at fejlen kun sker _nogle_
gange - langt fra hver gang denne side bruges. Jeg vil efterhånden påstå
det minder om en bug i php, men jeg kan ikke fremtvinge fejlen og jeg
kan ikke forklare hvordan den opstår - jeg ved kun det sker ind i mellem
for brugerne. Jeg har ikke oplevet den selv endnu...


--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
Kig også ind på http://hjoerringnyplanteskole.dk/

Troels Arvin (04-12-2003)
Kommentar
Fra : Troels Arvin


Dato : 04-12-03 23:08

On Thu, 04 Dec 2003 19:38:25 +0100, Mads Lie Jensen wrote:

> Det som undrer (irriterer) mig mest er dog at fejlen kun sker _nogle_
> gange - langt fra hver gang denne side bruges. Jeg vil efterhånden påstå
> det minder om en bug i php

Det er teoretisk set muligt, at to brugere får samme sessions-ID inden
for den periode, som en session varer. Men skulle dog tro/håbe, at PHP
har mekanismer til at forsøge at modvirke den slags sammenfald. Måske
nogle af den slags mekanismer er fejlbehæftede i visse PHP-versioner;
måske visse PHP-versioner har fejl i forb. med, at udløbne sessioner
ikke fjernes ordentligt, og dermed risikerer at blive genoptaget? Har du
søgt i PHP's bug-database?

Normalt lægges PHP's session-data i enkeltstående filer i et katalog.
Derfor kan følgende workaround overvejes: Hvis du ved, at din PHP's
sessioner er sat til max at vare x timer, kunne du opsætte et cron-job
der slettede evt. resterende session-filer med modifikationstidspunkter
over x timer, som PHP måtte have glemt at få slettet.

--
Greetings from Troels Arvin, Copenhagen, Denmark


Mads Lie Jensen (05-12-2003)
Kommentar
Fra : Mads Lie Jensen


Dato : 05-12-03 09:00

On Thu, 04 Dec 2003 23:07:40 +0100, Troels Arvin <troels@arvin.dk>
wrote:

>> Det som undrer (irriterer) mig mest er dog at fejlen kun sker _nogle_
>> gange - langt fra hver gang denne side bruges. Jeg vil efterhånden påstå
>> det minder om en bug i php
>
>Det er teoretisk set muligt, at to brugere får samme sessions-ID inden
>for den periode, som en session varer. Men skulle dog tro/håbe, at PHP
>har mekanismer til at forsøge at modvirke den slags sammenfald. Måske
>nogle af den slags mekanismer er fejlbehæftede i visse PHP-versioner;
>måske visse PHP-versioner har fejl i forb. med, at udløbne sessioner
>ikke fjernes ordentligt, og dermed risikerer at blive genoptaget? Har du
>søgt i PHP's bug-database?

Det er ikke sessions som kolliderer, der har kun været en enkelt eller
to brugere som har haft sessions i gang når fejlen er sket.
Selvom det havde været, så er der kun tre brugere som har adgang til den
del der går galt - og maksimum-id der gemmes er 3 - alligevel var det
sidste gang pludselig blevet 218 - jeg bad brugerne om at stoppe hvis de
oplevede fejlen igen, så jeg kunne studere de sessiondata som blev gemt
på serveren - og id-nummeret _var_ blevet overskrevet.

Jeg har nu i stedet gemt mit id-nummer i $_SESSION['kontrol_id'] og
dette ændres ikke - så på den måde er jeg kommer ud over fejlen.

Jeg har søgt i phps bugdatabase, men uden at finde noget som minder om
den.


--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
Kig også ind på http://hjoerringnyplanteskole.dk/

Kristian Thy (30-11-2003)
Kommentar
Fra : Kristian Thy


Dato : 30-11-03 22:27

Mads Lie Jensen uttered:
> Jeg har et meget mærkeligt problem.

Prøv at kalde variablen noget andet og se om fejlen stadig opstår.

\\kristian
--
MS is to security what McDonald's is to gourmet cooking.

Søg
Reklame
Statistik
Spørgsmål : 177502
Tips : 31968
Nyheder : 719565
Indlæg : 6408534
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste