Min tanke var att man lagrar conn-strängen i en fil utanför www-rooten och inkluderar den sedan i login.php. Är den skyddad då?
Ja, det duger gott. Du kanske vill nollställa variablerna efteråt också ($user, $pword).
7 svar · 327 visningar · startad av lillebror
Hej!
Jag håller på och lär mig PHP. När man anropar en databas så gör man ju det med ett anrop som kan se ut så här:
$conn = @mysql_connect($server, $user, $pword)
or die("Databaskopplingen EJ initierad!");
print("<b>Databaskopplingen upprättad!</b><br><br>");
return $conn;
Min fråga är hur gör man normalt sett med användarnamnet och lösenordet i conn-strängen. Man vill ju aldrig att någon ska kunna ta sig in i login.php i mitt fall och se exakt vad användarnamnet och lösenordet är? Hur brukar man lösa detta?
Min tanke var att man lagrar conn-strängen i en fil utanför www-rooten och inkluderar den sedan i login.php. Är den skyddad då? :)
Min tanke var att man lagrar conn-strängen i en fil utanför www-rooten och inkluderar den sedan i login.php. Är den skyddad då?
Ja, det duger gott. Du kanske vill nollställa variablerna efteråt också ($user, $pword).
Du kanske vill nollställa variablerna efteråt också ($user, $pword).
Hur menar du då att nollställa? Att jag nollställer variablerna i login.php?
Han menar väl att det som skrevs i formen har du lagt i en variabel ($user, $pass) och att dessa skall tömmas. Så fattade jag det, av hans inlägg och av din kod. :)
Han menar att jag tömmar variabeln $_POST[] efter att jag plocklat ut username och password och validerat dessa mot databasen? :)
Nej, han menar att du kanske vill nollställa variablerna efteråt också ($user, $pword) - alltså, efter att de använts.
$conn = @mysql_connect($server, $user, $pword)
or die("Databaskopplingen EJ initierad!");
$user = NULL;
$pword = NULL;
print("<b>Databaskopplingen upprättad!</b><br><br>");
return $conn;
Annars kan (teoretiskt sett) säkerhetsluckor på annat håll ge möjlighet att skriva ut lösenordet till webbläsaren. Tänk dig t.ex. att du har en template någonstans, där följande kod smygs in utan att du märker det:
<!-- <?= "u = $user, p = $pword" ?> -->
Användarnamn och lösenord för databasen skrivs då ut utan att någon ser det, förutom de som vet var de ska titta. Med lite otur (eller rättare sagt, med dålig kod som använder eval) går det att förse script med sån här kod från klientsidan, vilket naturligtvis inte är bra.
Är $user och $pword lokala för en funktion behöver man dock inte göra på detta sätt.
Det kanske är bättre att använda unset($user, $pword);
Tack för era kloka synpunkter! :) Nu förstår jag hur ni menade tidigare!