Waar let je op bij een login systeem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Soccertime website

soccertime website

08/01/2016 17:28:20
Quote Anchor link
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
 
PHP hulp

PHP hulp

26/12/2024 22:37:45
 
- Ariën  -
Beheerder

- Ariën -

08/01/2016 17:58:47
Quote Anchor link
Het belangrijkste is de veiligheid.
- Gebruik bij voorkeur SSL als men inlogt. Vooral als je persoonlijke gegevens gaat verwerken
- Sla wachtwoorden encrypted op met password_hash en vergelijk ze met de invoer met password_verify. 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.
Gewijzigd op 08/01/2016 18:06:53 door - Ariën -
 
Ward van der Put
Moderator

Ward van der Put

08/01/2016 18:13:44
Quote Anchor link
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.
 
Soccertime website

soccertime website

08/01/2016 18:23:02
Quote Anchor link
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
Gewijzigd op 08/01/2016 18:25:08 door soccertime website
 
- Ariën  -
Beheerder

- Ariën -

08/01/2016 18:34:29
Quote Anchor link
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.
Gewijzigd op 08/01/2016 18:34:58 door - Ariën -
 
Soccertime website

soccertime website

08/01/2016 19:31:53
Quote Anchor link
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>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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
 
- Ariën  -
Beheerder

- Ariën -

08/01/2016 19:36:11
Quote Anchor link
Je mist een statement bij je if vanaf lijn 9. Nu heb je één if-statement die van lijn 3 t/m 14 duurt.
 
Soccertime website

soccertime website

08/01/2016 19:44:31
Quote Anchor link
ik heb het nu bijgewerkt maar ik heb nog steeds de zelfde problemen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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');
            }

        ?>
 
- Ariën  -
Beheerder

- Ariën -

08/01/2016 20:10:47
Quote Anchor link
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.
 
L deB

L deB

08/01/2016 20:17:44
Quote Anchor link
Misschien dat het volgende je ook helpt:

https://github.com/panique/php-login-minimal

Heeft mij wel geholpen om het goed te begrijpen in ieder geval. Een werkend en veilig login script.
 
Soccertime website

soccertime website

08/01/2016 20:17:53
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?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
Gewijzigd op 08/01/2016 20:20:38 door soccertime website
 
- Ariën  -
Beheerder

- Ariën -

08/01/2016 20:21:36
Quote Anchor link
Als je nou zorgt voor goede inspringing, dan is alles in een oogopslag duidelijk:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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';
    }
}

        ?>

Benut gewoon de TAB-toets waarvoor hij bedoeld is. ;-)

Verder zou ik eerst maar even zorgen voor goede foutafhandeling en encryptie van je wachtwoord, voordat je extra dingen gaat toevoegen.
Gewijzigd op 08/01/2016 20:23:53 door - Ariën -
 
Soccertime website

soccertime website

08/01/2016 21:03:32
Quote Anchor link
dat foutafhandeling heb ik deels gedaan (ik kom niet uit stap 2)
en hoe bedoel je dat ik de tab toets niet (goed) gebruik, naar mijn idee is dit een overzichtelijk stukje php (maar ik kan er ook 100% naast zitten)
 
- Ariën  -
Beheerder

- Ariën -

08/01/2016 21:08:15
Quote Anchor link
Hoe jij het had was zeer onoverzichtelijk, je moet namelijk behoorlijk zoeken naar je { en }.
En dat moet je voorkomen. In een stukje code zoals dit is een fout zo gevonden, maar wat als je straks 5 in elkaar genestte if-else structuren hebt in een codebase van 400 regels?

En waar loop je bij stap 2 dan precies op vast?
Gewijzigd op 08/01/2016 21:08:46 door - Ariën -
 
Soccertime website

soccertime website

08/01/2016 21:12:00
Quote Anchor link
waar heb ik dit stuktje script voor nodig

$sql = "INSERT INTO leden
VALUES ('',
'".mysql_real_escape_string($_POST['gebruikersnaam'])."',
'".mysql_real_escape_string($_POST['wachtwoord'])."'
)
";
 
- Ariën  -
Beheerder

- Ariën -

08/01/2016 21:15:34
Quote Anchor link
Zie ook
deze URL:
Quote:
Is dit duidelijk? Bekijk dan zeker even de voorbeeldjes dan kan je zien hoe dit in de praktijk werkt.


Het is dus geen tutorial voor een inlogsysteem, maar een tutorial over het invoegen van foutafhandeling elke soort query.
Gewijzigd op 08/01/2016 21:16:35 door - Ariën -
 
Soccertime website

soccertime website

08/01/2016 21:24:33
Quote Anchor link
oké dit maakt het al duidelijker, bedankt voor al deze info
 
- Ariën  -
Beheerder

- Ariën -

08/01/2016 21:28:41
Quote Anchor link
Let er wel op dat deze tutorials van MySQL vanuit gaat. Dit moet je wel even herschrijven naar MySQli!
 
Soccertime website

soccertime website

08/01/2016 21:32:01
Quote Anchor link
ja dat had ik al in de gaten
 
Thomas van den Heuvel

Thomas van den Heuvel

08/01/2016 23:03:09
Quote Anchor link
@Ariën: encryptie is niet hetzelfde als hashing
@soccertime: als je hier al zoveel moeite mee lijkt te hebben heb je wellicht wat meer oefening nodig voordat je je gaat bezig houden met zaken omtrent beveiliging
 
- Ariën  -
Beheerder

- Ariën -

08/01/2016 23:05:53
Quote Anchor link
Leg eens uit, met encryptie genereer je toch een hash?
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.