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