03. januar 2003 - 10:07Der er
9 kommentarer og 1 løsning
Automatisk indsættelse fra server!?
Jeg har følgende kode i PHP kørende på en hostet apacheserver.
echo "<a href=\"../test.php?\">test</a>";
Når jeg så prøver at validere HTMLen gennem W3C får jeg følgende besked:
Line 31, column 52: cannot generate system identifier for general entity "PHPSESSID" ...ion" colspan=3><a href="../test.php?&PHPSESSID=91a23ec029a09f26c7b56464dea959 Nogen der har en idee om hvorfor serveren indsætter "&PHPSESSID=91a23ec029a09f26c7b56464dea959" ?
Og hvordan jeg får slået det fra eller eventuelt ændret det så der kommer til at stå "&" i stedet for "&"?
&PHPSESSID dukker op fordi du har slået sessions til af den type der sætter sessions op som en del af url'en (hvilket iøvrigt er en dum ting på grund af risikoen for xss/session hijacking). Du har næppe lyst til at indsætte & eftersom det er en del af en url og ikke bare almindelig tekst.
madst> jeg ser ikke, hvorfor brug af session id som en del af url'en er dummere end sessions gennem cookies (bortset fra en eventuel http-referer, men det er såmænd ikke mindre sikkert en brug af sessions gennem cookies)... jeg ser det snarere som en fordel, da mange vælger at slå cookies fra, og at man ved brug url-session-id omgårt dette.
Når sessions kører over cookies, sendes den blot gennem http-headeren... cookies er på ingen måde mere magiske end http-protokollen, da de netop er en del af denne. Derfor er det af mindre betydning, hvor man finder session-id'et - i http-header eller http-body.... der skal laves et større arbejde, for at gøre sessions mindre "prone" overfor hikacking... SSL er et godt bud, mens en simplere (og en anelse mere usikker) måde er at sammenholde session id med IP-adressen (som dog kan spoofes) eller reverse dns...
>(bortset fra en eventuel http-referer, men det er såmænd ikke mindre sikkert en brug af sessions gennem cookies).
Jo, det er en del mindre smart med sessions i URL'en - hvis brugeren følger et eksternt link, så fortæller hans browser troeligt det eksterne site hvor den kom fra - som så vil indeholde session id'et. Hvis det derimod er gemt i en cookie, så kan man som en del af cookien sætte hvilken server den må udleveres til - hvad der ellers hvis alting er sat korrekt op vil betyde at den eksterne server _ikke_ får session id'et.
Ja, sådan en session-cookie kan opsnappes hvis ikke man beskytter med ssl eller det der ligner, men det kræver at "angriberen" har adgang til at lave tcpdump et eller andet sted på netvækset mellem de to maskiner. URL baserede sessions er mindre smarte fordi de slet ikke stiller så store krav til "angriberen" - her udleverer browseren rent faktisk frivilligt session informationen. Tænk angrebsmønster mod en webmail tingest der bruger url baserede sessions - send en mail der henter noget, eksempelvis et indlejret billede, fra en maskine som du har kontrol over og så vil session informationen kunne hentes ud af logfilen. Jeg siger på ingen måde at sessions baseret på cookies er fuldstændig sikre - men som jeg har vist, så er url baserede sessions _mindre_ sikre.
du fik det bare til at lyde som om cookie-sessions var sikre, mens url-sessions var usikre... begge er usikre og bør ikke benyttes, hvis det er noget meget vigtigt, man gerne vil holde folk væk fra...
cirka enige - url sessions er aldrig gode, cookie sessions kan være ok hvis man har kontrol over netværket mellem klient og server.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.