![]() |
[PHP] Irritante sessions
Ik ben mijn loginscript aan het herschrijven en het is nu zo'n beetje af, alleen het werkt niet (meer). Eerst wel, maar nu loopt hij irritant te doen en volgens mij heb ik niets veranderd.
Dit is mijn code: (check() wordt aangeroepen) PHP-code:
Ik krijg namelijk deze output: Met andere woorden: Alle variabelen die in die sessie moeten komen, worden goed doorgegeven (zie eerste 4 regels output) en alle sessies worden goed geregistreerd (zie volgende 4 regels). Alleen toch is blijkbaar nog een probleem. Het moet aan de sessies liggen, want anders zou ik wel een andere foutmelding hebben gehad en bovendien is $_SESSION["user"] (en de anderen ook) leeg. Ik snap er echt niets van en ik hoop dat iemand mij kan helpen. |
Misschien moet je de username e.d. ook eens daadwerkelijk in de sessie stoppen?
|
Ik heb nu:
$_SESSION["user_id"] = $user_id; enzovoorts. Ik neem aan dat je dit bedoelt, want zo werkt het dus inderdaad wel. Kan iemand mij uitleggen waarom session_register("user_id"); in dit geval niet werkte en soms ook wel (in mijn oude loginscript en eerst ook in dit script)? |
session_register....even de naam vertalen "registreer sessie (variabele)"...Oftewel, dan is bekend dat je die sessievariabele gebruikt en daarna pleur je er een waarde in (dmv $_SESSION['var'] = $bla) :)
|
session_start() gebruikt?
|
Citaat:
|
Citaat:
$variabale = "iets"; session_register("variabele"); En dan werkte het op de één of andere manier. Citaat:
Citaat:
|
Citaat:
ik laat zien hoe je je onzorgvuldigheid kan gebruiken: GET index.php POST username: niks OR 1=1 PHP-code:
SELECT user_id, username, password, email FROM jbieger_users WHERE username=niks OR 1=1. waarop ik de hele DB leegpomp je moet de functie 'addslashes' gebruiken, en lees dan direct op php.net hoe die functie gebruikt wordt |
Maar ik heb ook nog enkele aanhalingstekens om de invoer heen staan, dus dan zou ik toch WHERE username='niks OR 1=1' krijgen? En dat is geen probleem. :) (nou ja, behalve dat die username niet bestaat)
|
Citaat:
niks' OR 1=1 omdat hij die ''' (enkele quote) ziet als afsluiting van het commando, als je de functie 'addslashes' gebruikt, dan zet hij voor die '''' (enkele quote) een '\\' (slash) en interpreteerd MySQL het nietmeer als afsluiting van het commando, en ben je veilig (zoek met google eens op 'MySQL injection', je zal berichten tegenkomen van de grootste bedrijven die veelal deze exploits hebben) |
Alle tijden zijn GMT +1. Het is nu 14:14. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.