Hallo,


Graag had ik wat advies om een dashboard login veilig te maken.
Het graat hierom een dashboard waarvoor je je niet kunt registreren, dus voor vaste mensen.

index:

<html>
<head>
<title>Dashboard</title>
<link rel="stylesheet" href="css/style.css"></link>
</head>
<body>
<form action="" method="POST">
<input type="text" class="logscreen_fields" name="user" id="user" placeholder="Gebruikersnaam"></input>
<input type="password" class="logscreen_fields" name="password" id="password" placeholder="Wachtwoord"></input>
</form>
</body>
</html>


<?php
session_start();

if($_SERVER['REQUEST_METHOD'] == 'POST'){

$user = $_POST['user'];
$password = $_POST['password'];


$users = array(
	'Gebruikera' => 'wachtwoorda',
	'Gebruikerb' => 'wachtwoordb',
	'Gebruikerc' => 'wachtwoordc'
//enz.
);


if(isset($users[$user])){
if($password == $users[$user]){
$_SESSION['login-naam'] = $user;
$_SESSION['login'] = "success";
//en word doorgestuurd naar beveiligd epagina

}else{
echo 'Wachtwoord is onjuist bij deze gebruikersnaam';
}

}else{
echo 'deze gebruiker is niet bij ons bekend.';

}
}
?>


securepage:

<?php
session_start();
if ($_SESSION['login'] != "success")
    {
        header('Location: index.php');
        exit();
    }
?>



Gr. Yoeri
En waarom je keuze voor vaste wachtwoorden? Ik vind dat niet bepaald veilig.
Want wat als iemand nou zijn wachtwoord laat slingeren, er achterkomt, en zijn wachtwoord niet zelf kan wijzigen? Moet hij dat hopeloos toezien dat iemand met kwaadwillige bedoelingen zonder zelf gerechtigd te zijn bedrijfinformatie kan inzien, wijzigen of verwijderen?
Er kan beter gekozen worden voor een systeem waar je met 1 account mee begint, dit account staat wel gewoon in de database met een hashed password. Dan raad ik aan om het wachtwoord (zoals Ariën hierboven aangeeft) te kunnen wijzigen binnen het systeem. En dat het ook mogelijk is om als admin (o.i.d.) accounts aan te maken/wijzigen/verwijderen. Op deze manier is het mogelijk om gebruikers die geen toegang mogen hebben tot het systeem weer te verwijderen.

Hopelijk heb je wat aan mijn advies, mochten er verder nog vragen zijn hoor ik het natuurlijk graag.
Bedankt voor de reactie's,

Als ik een admin account aanmaak, hoe kan ik dan het beste regelen dat dan de functie tevoorschijn komt om gebruiker te wijzigen / verwijderen of aan te maken?
Of maak je een hele andere omgeving hiervoor?
Ik zou als eerste de accounts in de database opslaan, waarbij je het wachtwoord gehashed opslaat met [php]password_hash[/php]. Het allersimpelst is een veld in de database die "is_admin" heet. Hierop controleer je dan of iemand admin is. Zo ja, dan geef je diegene extra rechten.

Als je meerdere rechten wilt hebben, voor diverse acties, dan loont het om eens te kijken naar een RBAC-rechtensysteem.
Ik mis filtering van de input... htmlspecialchars, trim etc...
L deB op 21/03/2016 19:59:36

Ik mis filtering van de input... htmlspecialchars, trim etc...


Wat is het nut daarvan wanneer je alleen leest uit de database ?

Aangezien we geen verdere info hebben zou er, bij wijzigingen in de database, ook heel goed gebruik gemaakt kunnen worden van prepared statements.

Bedoelen jullie zoiets?


<html>
	<form action="" method="POST">
		<input name="passwod">
		<button type="submit">
			send
		</button>
	</form>
</html>

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST'){
$password = $_POST['password'];
}

$passwordhash = password_hash('$password', PASSWORD_DEFAULT)."\n";


$doc = new_xmldoc('1.0');
$root = $doc->add_root('data');
$data->new_child('user','Gebruikera');
$data->new_child('password','$password');
fclose($fp);
?>
@Ariën etc., @Yoeri vraagt om een simpele loginfunctionaliteit.

Niet om een ledenbeheersysteem.
Niet om een rechten managementsysteem.

Er is een verschil tussen wat gevraagd wordt en wat de beantwoorders als ideale oplossing zien/aanleveren.

Ik zie zo gauw weinig mis met de oorspronkelijke oplossing, behalve misschien:
- de onversleutelde wachtwoorden, maar als je er over nadenkt, maakt het eigenlijk niet zoveel uit of deze versleuteld zijn of niet indien je de code in kan zien, er is dan mogelijk een andere zwakste schakel
- het controleren op het bestaan van een variabele, pas altijd eerst isset() toe voordat je de waarde van een variabele (die mogelijk helemaal niet bestaat) vergelijkt met iets anders
- het starten van sessies, het versturen van headers; dit dient te gebeuren voor verzending van enige output; wat ik op zijn minst zou doen is deze code opdelen in afzonderlijke "acties"

En later kun je bovengenoemde beheersystemen nog altijd toevoegen indien nodig. Wat als TS simpelweg een mockup wil? Tenzij je dit soort functionaliteit op de plank hebt liggen ga je deze systemen toch niet op voorhand schrijven?

In plaats van meteen weg te lopen met "dan moet je dit of dat doen" loont het misschien eerst de moeite om te vragen waar TS naartoe wil, nog voordat je zelf een kant op begint te rennen...
Thomas van den Heuvel op 22/03/2016 13:58:31

@Ariën etc., @Yoeri vraagt om een simpele loginfunctionaliteit.

Niet om een ledenbeheersysteem.
Niet om een rechten managementsysteem.


je leest hier blijkbaar overheen:
Yoeri Achterbergen op 21/03/2016 19:48:45

Als ik een admin account aanmaak, hoe kan ik dan het beste regelen dat dan de functie tevoorschijn komt om gebruiker te wijzigen / verwijderen of aan te maken?
Of maak je een hele andere omgeving hiervoor?

Dan is een beheerpaneel in ieder geval een must, want je wilt zulke rechten niet direct via de database invoeren. Verder heb ik gezegd dat een RBAC-systeem altijd een optie is als je meerdere rechten wilt aanmaken.

- Ariën - op 22/03/2016 14:01:25
je leest hier blijkbaar overheen:
[quote="Yoeri Achterbergen op 21/03/2016 19:48:45"]
Als ik een admin account aanmaak, hoe kan ik dan het beste regelen dat dan de functie tevoorschijn komt om gebruiker te wijzigen / verwijderen of aan te maken?
Of maak je een hele andere omgeving hiervoor?
[/quote]
Het is onduidelijk of dat een reactie is op jullie voorstellen, of dat dat echt de oorspronkelijke bedoeling van TS was. Deze reactie kwam ook pas na jullie opmerkingen. Deze vraag is dus mogelijk gestuurd/een gevolg van de "gekozen" oplossing. Dat lijkt mij de verkeerde volgorde.

EDIT: in de oorspronkelijke opzet was namelijk helemaal geen sprake van accounts aanmaken, dit was een statische lijst gebruikers (waarbij geen onderscheid werd gemaakt tussen de verschillende gebruikers (of beheerders))!

@Yoeri: wat probeer je uiteindelijk te bereiken?

Reageren