Ik heb een extra regel toegevoegd bij mijn index pagina, om te check als naam and wachtwoord niet overkomen die met de sessie doorgevoerd zijn ga dan terug. Als het goed is zijn mijn inlog gegevens gewoon goed, maar de index stuurt mij als nog terug naar mijn inlogform.

Hier zie je mijn inlog.php waar ik gegevens check van de database

<?php

ini_set('display_errors', 'On');
error_reporting(E_ALL);

// lees het config-bestand
require_once 'config.php';

// lees alle formulierenvelden
$email = $_POST['Email'];
$wachtwoord= $_POST['Wachtwoord'];

// controleer of alle formuliervelden waren ingevuld
if (strlen($email) > 0 && strlen($wachtwoord) > 0) {
    // versleutel het wachtwoord
    $wachtwoord = md5($wachtwoord);

    // maak de controle-query
    $query = "SELECT * FROM Registratie WHERE Email = '$email' AND Wachtwoord = '$wachtwoord'";

    // voer de query uit
    $result = mysqli_query($conn, $query);

    // controleer of de login correct was
    if ($mysqli_num_rows['$result'] == 1){
        // login correct, start de sessie
        session_start();

        // sla de username op in de sessie
        $_SESSION['Email'] = $email;
        $_SESSION['Wachtwoord'] = $wachtwoord;

        // stuur door naar de homepage
        header("Location:index.php");

    } else {

      // login incorrect, terug naar het login-formulier
        header("Location: inlogform.php");
        exit;
    }
} else {
    echo "Niet alle velden zijn ingevuld!";
    exit;
}



<?php

    // Aantal lijnen voor het debuggen
    error_reporting(E_ALL);
    ini_set('display_errors', '1');

    // Start sessie
    session_start();

    // Extra check voor zekerheid van inlog
    if(isset($_SESSION['Email']) && $_SESSION['Wachtwoord'])
    {
        echo "Welcome";

    } else {
        header("Location: inlogform.php");
    }
?>
Het kost helemaal niet veel moeite om iets veilig te maken.

Ik denk ook dat je veel meer leert van beveiligingsprincipes dan het simpelweg volgen van een apetruuk.

Achter wat je implementeert zou in ieder geval een motivatie moeten zitten, in elke regel code zitten in wezen ontwerpbeslissingen. Als je iets op manier A doet, dan doe je dit niet op manier B. Waarom (niet)? Als je onderbouwing niet verder reikt dan "dit werkt" dan zou ik dat als docent niet accepteren.

Hell, als het werkelijk zo weinig uit zou maken als jij doet voorkomen was het makkelijker geweest om ergens een loginscript van de interwebs te copypasten (vol met exploits en baggercode). Dat zou dan wel een mistroostig beeld schetsen van de kwaliteit van het hedendaags (IT-)onderwijs.

En wat is dat trouwens met dat onderwijs tegenwoordig, onderwijzen ze daar niet over debugging? Dat lijkt mij bij uitstek een geschikte manier om te leren programmeren.

Dit helpt ook veel meer bij het oplossen van probleem omdat dit je dwingt om je eigen code en foutmeldingen te interpreteren. Iedereen is zo snel van het padje af als er ergens een typefout gemaakt wordt of wanneer er iets onverwachts gebeurt wat men niet kan verklaren... dat houdt eigenlijk in dat je niet weet waar je mee bezig bent. Veel "problemen" hier zijn dan ook niet het probleem, het daadwerkelijke probleem is vaak dat men geen idee heeft hoe ze het probleem zouden moeten aanpakken.
Izildo Pimentel op 07/06/2018 23:48:58

Die sql injectie en exit heb ik nu ook bij gezet. Ik snap het er zijn meerdere checks voor security, maarja school wil zien dat je kan inloggen.

Totdat 's-Hertogenbosch wordt ingevuld: Error!
Minpuntje op de lijst!

Maak je maar geen zorgen dit is niet een realistische omgeving.

Zorg liever dat je alles goed voor elkaar hebt. Daar wordt de beoordelaar bij een controle ook vrolijk van, en het laat tevens zien dat je zelf ook ervaring hebt opgedaan voor het schrijven van een veilig systeem. En in deze tijd zal iedereen dat toejuichen.

Wat de klant aan eisen zal opstellen, betekent niet dat je expliciet aan die eisenlijst moet houden. De klant heeft geen ervaring met veiligheid en eist een inlogsysteem. Jij weet beter en jij gaat dan ook toevoegen wat jij een MUST HAVE vindt: De veiligheid!

Zie ook deze blog over een 'functioneel ontwerp'.

Reageren