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?

$gebruiker = preg_replace('#[^A-Za-z0-9?!\s\.\@]#i', '', $_SESSION["gebruiker"]);

Doormiddel van het filter is er dan nog mogelijkheid om met een script te werken?

Ik hoor het graag van jullie :), alvast bedankt!

Dave
@ward van der put

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>

<body>
<div id="wrapper">
<?php include_once("../headernav_template.php");?>
<div id="inhoud"><br />
<h2>CADSPECS dfdgNA</h2>

<form id="form1" name="form1" method="post" action="admin_login.php">
<div class="row">
<div class="label">User Name:</div>
<div class="input">
<input name="gebruiker" type="text" id="gebruiker" class="detail" size="40" />
</div><!--einde input-->
</div>
<div class="row">
<div class="label">Password:</div>
<div class="input">
<input name="wachtwoord" type="password" id="wachtwoord" class="detail" size="40" />
</div><!--einde input-->
</div>
<br />
<br />
<br />
<div class="submit">
<input type="submit" name="submit" id="submit" value="Log In" />
</div>
</form>
<p>&nbsp; </p>

</div>
<?php include_once("../footer_template.php");?>
</div>
</body>
</html>
Ward van der Put op 15/04/2013 16:20:40

Ik heb zo'n vermoeden dat je controles op de verkeerde plaats uitvoert.


Dat idee krijg ik ook steeds meer.

[size=xsmall]Toevoeging op 15/04/2013 16:24:47:[/size]

En nu admin_login.php nog, want daar log je in neem ik aan.
- SanThe - op 15/04/2013 16:23:08

[quote="Ward van der Put op 15/04/2013 16:20:40"]
Ik heb zo'n vermoeden dat je controles op de verkeerde plaats uitvoert.


Dat idee krijg ik ook steeds meer.

[size=xsmall]Toevoeging op 15/04/2013 16:24:47:[/size]

En nu admin_login.php nog, want daar log je in neem ik aan.
[/quote]



[size=xsmall]Toevoeging op 15/04/2013 16:27:14:[/size]

verontschuldiging: dat is de admin_login.php..........misschien bedoel je de index.php?
Dave muller op 15/04/2013 16:26:30

verontschuldiging: dat is de admin_login.php


Lijkt mij niet.
Want dan zit je volgens mij in een oneindige loop.

<?php
if (!isset($_SESSION["gebruiker"])) {
header("location: admin_login.php");
exit();
}?>
Oeps foutje..........dat moet zijn "location: index.php" heb er twee door elkaar gehaald!

[size=xsmall]Toevoeging op 15/04/2013 16:36:37:[/size]

Nog een keer nu de goede pagina!

<?php

ini_set('session.cookie_httponly', true);


session_start();

if (isset($_SESSION["gebruiker"])) {
header("location: index.php");
exit();
}
?>
<?php

if (isset($_POST["gebruiker"]) && isset($_POST["wachtwoord"])) {

$gebruiker = preg_replace('#[^A-Za-z0-9?!\s\.\@\]#i', '', $_POST["gebruiker"]);
$wachtwoord = preg_replace('#[^sA-Za-z0-9]#i', '', $_POST["wachtwoord"]);
include "verbinding_mysql.php";
$sql = mysql_query("SELECT id FROM admin WHERE gebruiker='$gebruiker' AND wachtwoord='$wachtwoord' LIMIT 1");
$existCount = mysql_num_rows($sql);
if ($existCount == 1) {
while($row = mysql_fetch_array($sql)){
$id = $row["id"];
}
$_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>

<body>
<div id="wrapper">
<?php include_once("../headernav_template.php");?>
<div id="inhoud"><br />
<h2>CADSPECS dfdgNA</h2>

<form id="form1" name="form1" method="post" action="admin_login.php">
<div class="row">
<div class="label">User Name:</div>
<div class="input">
<input name="gebruiker" type="text" id="gebruiker" class="detail" size="40" />
</div><!--einde input-->
</div>
<div class="row">
<div class="label">Password:</div>
<div class="input">
<input name="wachtwoord" type="password" id="wachtwoord" class="detail" size="40" />
</div><!--einde input-->
</div>
<br />
<br />
<br />
<div class="submit">
<input type="submit" name="submit" id="submit" value="Log In" />
</div>
</form>
<p>&nbsp; </p>

</div>
<?php include_once("../footer_template.php");?>
</div>
</body>
</html>
De preg_replace() op regel 5 geeft een error.

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.
- SanThe - op 15/04/2013 16:49:50

De preg_replace() op regel 5 geeft een error.

Ik denk een \ teveel!

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?

Reageren