formulier veld opslaan als SHA1 waarde in databse
ik heb eene probleem, tenminste ik weet niet zeker hoe ik het moet oplossen dus bij deze vraag ik het hier maar even. Ik heb wel verder gekeken, maar kon geen gelijke geval vinden ergens.
het probleem
ik wil uit een formulier data wegschrijven in mijn database
Code (php)
1
$sql = "INSERT INTO members (compid, level, name, email, user, pass) VALUES ('".$_POST['txtcompany']."', '".$_POST['txtlevel']."', '".$_POST['txtname']."', '".$_POST['txtmail']."', '".$_POST['txtusername']."', '".$_POST['txtpassword']."')";
nu moet alleen het laatste veld '".$_POST['txtpassword']."'
gecodeerd in SHA1 worden opgeslagen. Hoe moet ik dit oplossen?
ik dacht als volgt
Code (php)
1
$sql = "INSERT INTO members (compid, level, name, email, user, pass) VALUES ('".$_POST['txtcompany']."', '".$_POST['txtlevel']."', '".$_POST['txtname']."', '".$_POST['txtmail']."', '".$_POST['txtusername']."', 'sha1(".$_POST['txtpassword'].")')";
Dit is echt een gok.
Hopelijk kan iemand mij verder helpen.
alvast bedankt ^^
Alleen zou ik het maken
Code (php)
1
2
3
4
2
3
4
<?php
$shatext=sha1($_POST['textpasswoord']);
//en hier gewoon de rest gewoon voor de duidelijkheid.
?>
$shatext=sha1($_POST['textpasswoord']);
//en hier gewoon de rest gewoon voor de duidelijkheid.
?>
Gewijzigd op 02/06/2010 17:23:59 door jo colling
maar als ik verder geen reacties krijg dan laat ik het zo, als wat ik als gok waagde.
bedankt ^^
Nooit $_POST-waarden direct in de database zetten.
Zie mysql_real_escape_string)().
Kan je niet gewoon testen of sha1($_POST['txtpassword']) de juiste uitkomst geeft?
'sha1(".$_POST['txtpassword'].")'
Je kan beter je query opdelen en beter coderen, dan had je denk ik zelf de fout ook wel gezien..
vooruit dan maar:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$sql =
"
INSERT INTO
members
(
compid,
level,
name,
email,
user,
pass
)
VALUES
(
' " . mysql_real_escape_string( $_POST['txtcompany']). " ',
' " . mysql_real_escape_string( $_POST['txtlevel']) . " ',
' " . mysql_real_escape_string( $_POST['txtname']) . " ',
' " . mysql_real_escape_string( $_POST['txtmail']) . " ',
' " . mysql_real_escape_string( $_POST['txtusername']) . " ',
' " . mysql_real_escape_string( $_POST['txtpassword']) . " '
)
";
?>
$sql =
"
INSERT INTO
members
(
compid,
level,
name,
email,
user,
pass
)
VALUES
(
' " . mysql_real_escape_string( $_POST['txtcompany']). " ',
' " . mysql_real_escape_string( $_POST['txtlevel']) . " ',
' " . mysql_real_escape_string( $_POST['txtname']) . " ',
' " . mysql_real_escape_string( $_POST['txtmail']) . " ',
' " . mysql_real_escape_string( $_POST['txtusername']) . " ',
' " . mysql_real_escape_string( $_POST['txtpassword']) . " '
)
";
?>
Ik heb expres een paar spaties gedaan zodat je het verschil kan zien.
Verder zou ik voor password een salt gebruiken. Je kan hiervoor de gebruikersnaam gebruiken maar zelf ook een salt verzinnen. Het is dan zo
LET OP: Je moet wel eerst de velden controleren.
deze pagina wordt straks lokaal gebruikt. Deze registratie pagina is sowieso alleen door beheerder te bereiken en verder door niemand. Maar ik zal MySQL_real_escape_string() uitzoeken en kijken hoe ik dit moet gebruiken.
@jo colling
zal morgen nog wel een poging wagen om lokaal server te starten met PHP/SQL ondersteuning. en anders zou ik niet weten hoe en waar ik kan testen.
thanks ^^ jah dat van jou is veel overzichtelijker.
Zal eens goed doornemen. ben niet zo bekend met php.. moet nog veel leren.. maar goed dat ik deze site tegen kwam.
xammp server downloaden?
aaaaahhh gelijk een goede server met alles erin. beter dna alles los moeten installeren en instellen.. want daar werd ik vorige keer gek van toen het niet wou lukken.
thanks!
Geen probleem;)
Waarom niet de SQL functie SHA1() gebruiken in je query? hoe je deze ook niet eerst door te kopieeren in een andere variabele.
Erik Rijk op 02/06/2010 18:42:33:
Waarom niet de SQL functie SHA1() gebruiken in je query? hoe je deze ook niet eerst door te kopieeren in een andere variabele.
Stel dat je dat doet en MySQL logt alle query's. Dan staat dus de wachtwoorden van iedereen die inlogt in dat log bestand.
Je hoeft de variabele niet te kopiëren:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$sQry = 'SELECT kolom1' .
' FROM tabel' .
' WHERE kolom2 = ' . sha1('wachtwoord');
?>
$sQry = 'SELECT kolom1' .
' FROM tabel' .
' WHERE kolom2 = ' . sha1('wachtwoord');
?>
Erik Rijk op 02/06/2010 18:42:33:
Waarom niet de SQL functie SHA1() gebruiken in je query? hoe je deze ook niet eerst door te kopieeren in een andere variabele.
Zouden die dan ook terug te vinden zijn in mysql's query log?
Martijn B op 02/06/2010 18:50:59:
Stel dat je dat doet en MySQL logt alle query's. Dan staat dus de wachtwoorden van iedereen die inlogt in dat log bestand.
Erik Rijk op 02/06/2010 18:42:33:
Waarom niet de SQL functie SHA1() gebruiken in je query? hoe je deze ook niet eerst door te kopieeren in een andere variabele.
Stel dat je dat doet en MySQL logt alle query's. Dan staat dus de wachtwoorden van iedereen die inlogt in dat log bestand.
Die log moet dus wel aangezet worden. Hij staat standaard uit.
Karl Karl op 02/06/2010 18:56:21:
Die log moet dus wel aangezet worden. Hij staat standaard uit.
Slow-query-log staat vaak aan, en daar kunnen ook op zichzelf snelle queries in terecht komen (maar die dan bijv. heel lang moeten wachten omdat de tabel gelockt is)
Karl Karl op 02/06/2010 18:56:21:
Die log moet dus wel aangezet worden. Hij staat standaard uit.
Martijn B op 02/06/2010 18:50:59:
Stel dat je dat doet en MySQL logt alle query's. Dan staat dus de wachtwoorden van iedereen die inlogt in dat log bestand.
Erik Rijk op 02/06/2010 18:42:33:
Waarom niet de SQL functie SHA1() gebruiken in je query? hoe je deze ook niet eerst door te kopieeren in een andere variabele.
Stel dat je dat doet en MySQL logt alle query's. Dan staat dus de wachtwoorden van iedereen die inlogt in dat log bestand.
Die log moet dus wel aangezet worden. Hij staat standaard uit.
leuk als je niet weet of je hoster het wel of niet aan hebt staan en er komt iemand anders achter ;) dus gewoon nooit doen, kan t nooit verkeerd gaan ook..
____
/offtopic :)
Terence Hersbach op 02/06/2010 19:02:17:
leuk als je niet weet of je hoster het wel of niet aan hebt staan en er komt iemand anders achter ;) dus gewoon nooit doen, kan t nooit verkeerd gaan ook..
____
/offtopic :)
Karl Karl op 02/06/2010 18:56:21:
Die log moet dus wel aangezet worden. Hij staat standaard uit.
Martijn B op 02/06/2010 18:50:59:
Stel dat je dat doet en MySQL logt alle query's. Dan staat dus de wachtwoorden van iedereen die inlogt in dat log bestand.
Erik Rijk op 02/06/2010 18:42:33:
Waarom niet de SQL functie SHA1() gebruiken in je query? hoe je deze ook niet eerst door te kopieeren in een andere variabele.
Stel dat je dat doet en MySQL logt alle query's. Dan staat dus de wachtwoorden van iedereen die inlogt in dat log bestand.
Die log moet dus wel aangezet worden. Hij staat standaard uit.
leuk als je niet weet of je hoster het wel of niet aan hebt staan en er komt iemand anders achter ;) dus gewoon nooit doen, kan t nooit verkeerd gaan ook..
____
/offtopic :)
Als je helemaal veilig wilt zijn moet je gewoon je troep zelf hosten op een zelf ingestelde server, in een zelf ingerichte rack.
met een slot erop.
Als je een competente systeembeheerder bent wel.