Heei,
Toen ik dit topic las.. dacht ik yes! Dat is nou precies iets waar ik wat over weet.. Ik zal je in het kort wat uitleggen over bepaalde dingen die je moet gebruiken om je script overzichtelijk/veilig endergelijke te maken. Dit zal ik doen aan de hand van een paar voorbeelden. Ik zal beginnen met overzichtelijk te programmeren, waarom? Omdat als je niet overzichtelijk programmeerd de beveiliging er wel eens bij in kan schieten. en het voordeel daarvan is dat iedereen makkelijk je code kan lezen en ook makkelijk kan debuggen als je met een fout zit waar je zelf niet uit komt
Oké lets go, (Ik zal steeds mezelf van vroeger laten zien)
Wat veel beginners doen is de code zo gauw mogelijk plaatsen en dan als het werkt vinden ze het best.. Maar als je niet iets wilt wijzigen of toevoegen is het met een onoverzichtelijke code al snel heel erg moeilijk om het stukje te vinden wat je nodig hebt.. (Vooral bij grote scripts)
Een voorbeeld van zo'n script (Klein formuliertje)
PHP:
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if(!empty($_POST['naam'])){
if(!empty($_POST['verhaal'])){
echo "Gelukt!";
}else{
echo "U heeft geen verhaaltje opgegeven";
}
}else{
echo "U heeft geen naam in gevoerd";
}
}
HTML:
<form method="POST" action="">
<table>
<tr>
<td>Naam </td><td><input type="text" name="naam"></td>
</tr>
<tr>
<td>Verhaaltje </td><td><input type="text" name="verhaal"></td>
</tr>
</table>
</form>
Dit is natuurlijk zo onoverzichtelijk als het maar kan.. Als hier een fout in zit kan je het misschien nog wel vinden, (5 minuten?) Maar als je nu 1000 regels van zulk soort code hebt?
Beter is het om het zo te doen (Je hebt wel meer regels nodig maar het is echt beter voor jezelf)
HTML:
<form method="POST" action="">
<table>
<tr>
<td>Naam </td><td><input type="text" name="naam"></td>
</tr>
<tr>
<td>Verhaaltje </td><td><input type="text" name="verhaal"></td>
</tr>
</table>
</form>
En dan het PHP gedeelte zoiets..
PHP:
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(!empty($_POST['naam']))
{
if(!empty($_POST['verhaal']))
{
echo 'Gelukt!';
}
else
{
echo 'U heeft geen verhaaltje ingevoerd!';
}
}
else
{
echo 'U heeft geen naam ingevoerd!';
}
}
Zoals je ziet is dit veel makkelijker te debuggen dan het andere scriptje hierboven..
Oké nu over de beveiliging.. Een website hacken kan op verschillende manieren.
Maar SQL injection wordt het meeste toegepast. Ik kan hier best een hele tutorial van maken maar die zijn er al zat daarom verwijs ik je naar de volgende (nederlandse) tutorial
http://www.phphulp.nl/php/tutorials/3/444/1007/
Als je die gelezen hebt.. Zal ik een paar dingen op een rijtje zetten. Om je query te beveiligen gebruik je de volgende attributen om het egt veilig te maken
- mysql_real_escape_string();
- is_nummeric
- intval
een voorbeeld query dan maar even..
PHP:
$query insert = mysql_query("INSERT INTO tabelnaam (naam, verhaaltje) VALUES ('".mysql_real_escape_string($_POST['naam'])."', '".mysql_real_escape_string($_POST['verhaal'])."' WHERE uitleg='".intval($_POST['uitleg'])."')");
Snap je het? Zonee vragen mag altijd
