Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 04-01-2005, 01:10
Jordi
Avatar van Jordi
Jordi is offline
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:
...
function 
sessions ($user_id$user$pass$mail)
{
    echo 
"$user_id<br />$user<br />$pass<br />$mail<br />";
    if (
session_register("user_id")) echo "1<br />";
    if (
session_register("user")) echo "2<br />";
    if (
session_register("pass")) echo "3<br />";
    if (
session_register("mail")) echo "4<br />";
}

function 
check ()
{
    
$query "    SELECT user_id, username, password, email
                FROM jbieger_users
                WHERE username='"
.$_POST['username']."'";
    
$userinfo mysql_fetch_object(mysql_query($query));
    
    if (
$userinfo->username)
    {
        
$password md5($_POST['password']);
        if (
$password == $userinfo->password)
        {
            
sessions($userinfo->user_id$_POST['username'], $_POST['password'], $userinfo->email);
            if (
$_SESSION["user"])
                echo 
"U bent succesvol ingelogd";
            else
                echo 
"Er is een probleem opgetreden.";
        }
        else
            echo 
"Het ingevoerde wachtwoord is fout.";
    }
    else
        echo 
"Deze gebruikersnaam bestaat niet.";
}
... 
Het is uiteraard de bedoeling dat ik straks de melding ga krijgen dat ik succesvol ben ingelogd, maar dat gaat dus niet werken.
Ik krijg namelijk deze output:
Code:
24
Test
lalala
test@test.test
1
2
3
4
Er is een probleem opgetreden.
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.
__________________
Mommy, that salesman's on TV!

Laatst gewijzigd op 04-01-2005 om 01:12.
Met citaat reageren
Advertentie
Oud 04-01-2005, 02:10
Chimera
Avatar van Chimera
Chimera is offline
Misschien moet je de username e.d. ook eens daadwerkelijk in de sessie stoppen?
Met citaat reageren
Oud 04-01-2005, 08:01
Jordi
Avatar van Jordi
Jordi is offline
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)?
__________________
Mommy, that salesman's on TV!

Laatst gewijzigd op 04-01-2005 om 08:04.
Met citaat reageren
Oud 04-01-2005, 10:02
Fade of Light
Avatar van Fade of Light
Fade of Light is offline
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)
Met citaat reageren
Oud 04-01-2005, 10:59
Verwijderd
session_start() gebruikt?
Met citaat reageren
Oud 04-01-2005, 12:52
Enlightenment
Avatar van Enlightenment
Enlightenment is offline
Citaat:
WHERE username='".$_POST['username']."'"
Je begrijpt trouwens dat je script hierdoor lek is als je geen Magic Quotes GPC gebruikt he?
__________________
Per undas adversas (tegen de stroom in)
Met citaat reageren
Oud 04-01-2005, 22:03
Jordi
Avatar van Jordi
Jordi is offline
Citaat:
Fade of Light schreef op 04-01-2005 @ 11:02 :
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)
Ik snap wel waarom dat andere (wat ik nu dus heb) beter is. Of beter gezegd: ik snap een beetje hoe dat andere werkt, maar eerst deed ik het altijd zo:
$variabale = "iets";
session_register("variabele");

En dan werkte het op de één of andere manier.

Citaat:
********** schreef op 04-01-2005 @ 11:59 :
session_start() gebruikt?
Ja, dat wel.

Citaat:
Enlightenment schreef op 04-01-2005 @ 13:52 :
Je begrijpt trouwens dat je script hierdoor lek is als je geen Magic Quotes GPC gebruikt he?
Nee, dat begrijp ik niet, want ik weet niet wat GPC is.
__________________
Mommy, that salesman's on TV!
Met citaat reageren
Oud 04-01-2005, 22:27
dafelix
Avatar van dafelix
dafelix is offline
Citaat:
Jordi schreef op 04-01-2005 @ 23:03 :
Nee, dat begrijp ik niet, want ik weet niet wat GPC is.

ik laat zien hoe je je onzorgvuldigheid kan gebruiken:

GET index.php
POST username: niks OR 1=1


PHP-code:
$query "    SELECT user_id, username, password, email
                FROM jbieger_users
                WHERE username='"
.$_POST['username']."'"
?> 
zal resulteren in deze query:

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
__________________
$karma++;
Met citaat reageren
Oud 04-01-2005, 23:53
Jordi
Avatar van Jordi
Jordi is offline
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)
__________________
Mommy, that salesman's on TV!
Met citaat reageren
Oud 05-01-2005, 09:51
dafelix
Avatar van dafelix
dafelix is offline
Citaat:
Jordi schreef op 05-01-2005 @ 00:53 :
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)
nee, want nu voer ik simpelweg dit in:

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)
__________________
$karma++;
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 16:14.