Hoi hoi, ik ben hier nieuw en ben net met PHP begonnen. Nu ben ik een leuke database aan het maken in MySQL en een inlogscherm voor de ecommerce site. Hiervoor maak ik een session aan en nu heb ik wat gelezen over session hijacking.
Nu vroeg ik mezelf af. Kan dat niet worden uitgesloten door alle formulieren op de website te laten filteren met de preg_replace functie?
Misschien handig dat ik de hele pagina hier zet met html en al:
<?php
ini_set('session.cookie_httponly', true);
session_start();
if (!isset($_SESSION["gebruiker"])) {
header("location: admin_login.php");
exit();
}
// Check gebruiker of deze in database is
$gebruikerID = preg_replace('#[^0-9]#i', '', $_SESSION["id"]); // filter
$gebruiker = preg_replace('#[^A-Za-z0-9?!\s\.\@]#i', '', $_SESSION["gebruiker"]); // filter
$wachtwoord = preg_replace('#[^A-Za-z0-9]#i', '', $_SESSION["wachtwoord"]); // filter
// query gebruker en password session var gelijk aan db informatie
// verbinding mysql
include "verbinding_mysql.php";
$sql = mysql_query("SELECT * FROM admin WHERE id='$gebruikerID' AND gebruiker='$gebruiker' AND wachtwoord='$wachtwoord' LIMIT 1"); // query de gebruiker
// ------- kijken of persoon in database is ---------
$existCount = mysql_num_rows($sql); // count row nums
if ($existCount == 0) { // evalueer count
echo "Login niet in database.";
exit();
}
$_SESSION["id"] = $id;
$_SESSION["gebruiker"] = $gebruiker;
$_SESSION["wachtwoord"] = $wachtwoord;
header("location: index.php");
exit();
} else {
echo 'verkeerde informatie <a href="index.php">Click Here</a>';
exit();
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login voor de manager </title>
<link rel="stylesheet" href="../style/style.css" type="text/css" media="screen" />
</head>
Een wachtwoord moet zo moeilijk mogelijk zijn, maar bij jou mag ie alleen maar uit letters en cijfers bestaan. Dat is dus juist vaak NIET de bedoeling. Een vreemd !@#$%^&*()_-?/|\ wordt vaak juist aanbevolen.
Onlogisch: .. == 1 en dan verder met while().
Geen wachtwoord (en zeker nooit ongecodeerd) in een session of in een cookie.
Een wachtwoord moet zo moeilijk mogelijk zijn, maar bij jou mag ie alleen maar uit letters en cijfers bestaan. Dat is dus juist vaak NIET de bedoeling. Een vreemd !@#$%^&*()_-?/|\ wordt vaak juist aanbevolen.
Onlogisch: .. == 1 en dan verder met while().
Niet echt een verklaring voor :). Volgens mij de gedachtegang "id moet overeenkomen met 1 rij, dan pak array, anders foutmelding........Mja klinkt mij logisch
Geen wachtwoord (en zeker nooit ongecodeerd) in een session of in een cookie.
Hahahaha, ik ben ook niet helemaal klaar he ;). Was ff aan het controleren wat de mogelijkheden waren bij "gebruiker", wordt nog veranderd hoor!
BTW hoe kan ik de invoer gelijk aan gegevens database maken? Case sensitive?