hoi,
ik ben nu bezig met een loginscript voor de admin en zou graag willen weten waar je rekening mee moet houden bij een loginscript het is maar voor 2 tot 5 admins aangezien het mijn eerste loginscript gaat worden weet ik niet echt waar ik mee moet beginnen

alvast bedankt, soccertime
Het belangrijkste is de veiligheid.
- Gebruik bij voorkeur SSL als men inlogt. Vooral als je persoonlijke gegevens gaat verwerken
- Sla wachtwoorden encrypted op met [php]password_hash[/php] en vergelijk ze met de invoer met [php]password_verify[/php]. Een enkele keer encrypten van een wachtwoord is voldoende, doe niet niet voor de veiligheid vaker, want je 'hash' wordt daardoor wel zwakker.
- Ga brute-force tegen door een max. aantal inlogpogingen toe te staan per IP-adres per +/- 15 minuten.
- Vermeld nooit als iemand een foute inlogpoging doet wel ingevoerde gegeven fout is gegaan, maar uitsluitend dat "username en/of wachtwoord" is fout.
- Gebruik bij voorkeur de Secure-flag voor cookies.
- Bied als het kan een systeem aan dat de gebruiker inzicht heeft in de aangemaakte inlogesessies, zodat men alle elders aangemaakte inlogsessies van hemzelf kan wissen.
- Sla NOOIT wachtwoorden op in sessies of cookies, ook niet als ze geëncrypted zijn. Een wachtwoord heb je maar één maal nodig, en dat is de authenticatie bij het inloggen.
- Stuur bij een 'vergeten wachtwoord' nooit een nieuw wachtwoord per mail, maar stuur de gebruiker naar een nieuwe tijdelijke pagina toe waar men een nieuw wachtwoord kan bedenken.

Wat extraatjes:
- Bied een Social Sign-On aan. En koppel de ID van de gebruiker aan zijn nieuw aangemaakte registratie.
- Als je belangrijke gegevens gaat verwerken en veel met transacties doet, bied een Two-Factor login aan. Denk bijv. aan een SMS met een extra code die je stuurt. Of gebruik van Google Authenticator.
De standaard Payment Card Industry (PCI) Data Security Standard (DSS) voor creditcardbetalingen kent nog meer eisen: Om er een paar uit te vissen:

• een lock-out van minimaal 30 minuten na niet meer dan 6 mislukte inlogpogingen;
• verplicht opnieuw inloggen na 15 minuten inactiviteit in de sessie;
• wachtwoorden moeten minimaal om de 90 dagen worden gewijzigd;
• een nieuw wachtwoord mag niet gelijk zijn aan de 4 laatst gebruikte wachtwoorden.
ik heb het loginscript tot nu toe alleen nodig om lijsten te zien van mensen die zich hebben aangemeld voor de nieuwsbrief waar ik dus de naam van een persoon en het email adres te zien krijg bijv.
jan test - [email protected]

(hier mag dus niemand zomaar inkunnen komen het is alleen voor mij en de andere beheerders)zijn er dan regels voor werken met persoonlijke gegevens


---------------
had niet gezien dat je had geschreven over persoonlijke gegevens en ssl, ik weet eigenlijk niet echt wat ssl inhoudt kan ik hier wat meer info over krijgen
https://nl.wikipedia.org/wiki/SSL, eerste link.

SSL is tegenwoordig zo uitgroeiend, dat je er niet omheen kan. Zelfs hier op PHPhulp hebben we er nieuwartikelen aan gewijd, waaronder de gratis LetsEncrypt mogelijkheid.
ik heb nu dit(dit is nog niet beveiligd):

<html>
<head>
<title>loginscript</title>
</head>
<body>
<form action="" method="post">
Naam: <br/> <input type="name" name="name" value=""/><br/>
Wachtwoord: <br/> <input type="password" name="pass" value=""/><br />
<input type="submit" value="inloggen" name="login">
</form>
<?php
$con= mysqli_connect('127.0.0.1','root','','tdb');
if(isset($_POST['login'])){
$name= mysqli_real_escape_string($con,$_POST['name']);
$password= mysqli_real_escape_string($con,$_POST['pass']);
$select_user="SELECT * FROM user WHERE naam ='$name' AND wachtwoord ='$password' ";
$run_user= mysqli_query($con, $select_user);
$check_user= mysqli_num_rows($run_user);
if($check_user>0)
header('location:admin.php');
}
else{
echo('uw naam en/of wachtwoord kloppen niet');
}
?>
</body>
</html>

nu heb ik alleen 2 problemen
-als ik een verkeerde combinatie van naam en wachtwoord invoer krijg ik niet mijn echo 'uw naam en wachtwoord kloppen niet' maar refresht de pagina
-google chrome slaat de goede combinatie en als je op de index.php pagina komt staat er meteen de goede combinatie en hoef je alleen nog maar op inloggen te klikken hoe kan ik dit weghalen bij google chrome
Je mist een statement bij je if vanaf lijn 9. Nu heb je één if-statement die van lijn 3 t/m 14 duurt.
ik heb het nu bijgewerkt maar ik heb nog steeds de zelfde problemen

<?php
$con= mysqli_connect('127.0.0.1','root','','tdb');
if(isset($_POST['login'])){
$name= mysqli_real_escape_string($con,$_POST['name']);
$password= mysqli_real_escape_string($con,$_POST['pass']);
$select_user="SELECT * FROM user WHERE naam ='$name' AND wachtwoord ='$password' ";
$run_user= mysqli_query($con, $select_user);
$check_user= mysqli_num_rows($run_user);
if($check_user>0){
header('location:admin.php');
}
}
else{
echo('uw naam en/of wachtwoord kloppen niet');
}
?>
Bekijk je statement eens goed, je kijkt nu of er op de knop van login is gedrukt, en zo niet... laat dan die melding zien. Niet echt de juiste weg. Ik zou op lijn 11 een else maken waarin je die melding toont.

Ik zou ook eens foutafhandeling gebruiken op je query's.
als ik dit doe krijg ik een foutmelding na het klikken op login: Parse error: syntax error, unexpected '}', expecting ',' or ';' in C:\xampp\htdocs\index.php on line 21

dit is het script nu:
<?php
$con= mysqli_connect('127.0.0.1','root','','tdb');
if(isset($_POST['login'])){
$name= mysqli_real_escape_string($con,$_POST['name']);
$password= mysqli_real_escape_string($con,$_POST['pass']);
$select_user="SELECT * FROM user WHERE naam ='$name' AND wachtwoord ='$password' ";
$run_user= mysqli_query($con, $select_user);
$check_user= mysqli_num_rows($run_user);
if($check_user>0){
header('location:admin.php');}
else{echo'uw naam en/of gebruikersnaam kloppen niet'}
}
?>

laat maar zie dat ik een ";" ben vergeten achter de echo het script werkt nu zoals het hoort te werken nu wil ik 1 stap verder en dat is dat je niet meer dan 5keer mag proberen in 15 minuten

Reageren