hallo ik ben voor mijn website bezig om een admin gedeelte te bouwen zodat ik makkelijk content kan toevoegen/verwijderen/wijzigen en heb niet altijd mijn laptop met mijn bestanden bij me natuurlijk :)
dus heb ik nu een zo veilig mogelijke login proberen te maken met de vele criteria en tips die hier gegeven wordt en ben tot een stukje php script gekomen en wil aan jullie vragen of dit goed is en zal werken.
@obelix ik weet dat het normaal gesproken beter in de query kan verwerken maar kom ik daarmee niet in de problemen als ik de wachtwoord eruit haal?
Geen idee wat je bedoelt.
De bewerkingen die je loslaat op de variabele die je aanmaakt, kun je ook gewoon toepassen op de $_POST waarde. Waarom de $_POST waarde kopiƫren naar een variabele?
@erwin ik snap wat je nu bedoelt, ik heb het in de query proberen te verwerken en heb de onnodige variabelen helemaal weggehaald en het in de query geprobeerd te zetten en ik hoop dat het nu goed is ik heb ook gelijk de sessie aangemaakt zodat hij helemaal compleet is :) kunnen jullie kijken of ik nu de salt en pepper er goed inzet ook ?
$gUser = ("SELECT
name, password
FROM
members
WHERE
name = '" .mysql_real_escape_string($_POST['name']). "'
AND
password = '" .mysql_real_escape_string(sha1($_POST[$pass .$salt])). "'
");
Regel 8, waar komt password nu vandaan? Ik neem aan dat je bedoelt $_POST['password'] (zelfde op regel 10 en 15)
Op regel 27 zit je een beetje fout met je $_POST variabele key.
Op regel 42 gebruik je $naam die niet bestaat.
Ik zou niet controleren op >0, maar of het 1 is.
Er is toch maar 1 gebruiker/wachtwoord combinatie mogelijk?
Of heb jij meerdere gebruikers met dezelfde naam en hetzelfde wachtwoord?
@obelix ik heb het even aangepast @ erwin ik heb het even allemaal gefixt alleen regel 27 en 42 weet ik niet hoe op te lossen kan je een voorbeeldje geven ?
ik heb regel 24 hierin veranderd <?php password = '" .mysql_real_escape_string(sha1($pass .$salt). "' ?>
regel 27: aangezien je de salt er al bij doet in regel 8, hoef je in regel 27 alleen nog maar de encryptie erop los te laten:
mysql_real_escape_string(sha1($pass)) [edit: had je in $pass staan]
Alleen vraag ik me af of dan die mysql_real_escape_string nog nodig is. Enige rare code die een hacker erin gooit zou al verdwenen moeten zijn door de encryptie, maar dat zou je anders even zelf moeten proberen.
regel 42: hier kan he gewoon $_POST['name'] gebruiken. Je hebt het gecontroleerd en het is een goede gebruikersnaam, dus die kan je nu in je sessie zetten.
$_SESSION['name'] = $_POST['name'];
Session_register moet je niet gebruiken. Is in php 5.4 niets eens meer aanwezig.
$gUser = ("SELECT
name, password
FROM
members
WHERE
name = '" .mysql_real_escape_string($_POST['name']). "'
AND
password = '" .mysql_real_escape_string(sha1($_POST['password'])). "'
");
$noMatch = "er is geen match gevonden voor desbetreffende wachtwoord en gebruikersnaam";
}
}
}
?>
nu heb ik nog een vraag aangezien ik de enige ben die gebruik gaat maken van de login kan ik dan gewoon zelf een wachtwoord invoegen in mijn database? dus een password 'hardcoded' aanmaken die echoen en in mijn database plakken?
Dit doe je:
$pass = sha1($_POST['password'] .$salt);
password = '" .mysql_real_escape_string(sha1($_POST['password'])). "'
(tweede regel een deel van je SQL statement)
Als je het ingegeven password plus de salt in $pass stopt, wat moet je dan in je SQL statement invoegen?