Scripts
Basisbeveiliging tegen Mysql-injecties
Deze functie gaat alle variabelen door en beveiligt elk met mysql_real_escape_string, mysql_escape_string of addslashes. Zelfs arrays worden meegenomen. In de meest ideale situatie laadt je deze script voor elk ander script. Je dient helaas, i.v.m. mysql_real_escape_string, de script net onder je DB-connectie te zetten, anders geeft deze een error terug.
basisbeveiliging-tegen-mysqlinjecties
<?php
/****************************
Module Laatst gewijzigd: 12-04-2008
* http://nl3.php.net/manual/en/security.database.sql-injection.php
* http://dev.mysql.com/tech-resources/articles/guide-to-php-security-ch3.pdf
* Notitie: Deze script is overigens bij 't origineel in het engels (en wat gedetaileerder) becommentariseert aangezien ik mijn systeem later op sourceforge wil delen. Bij deze alvast een voorproefje!
****************************/
function secure_it($secval='')
{
/****************************
De functies staan in chronologische volgorde voor gebruik.
1. 'mysql_real_escape_string' = Sinds PHP v. 4.3.0 (DBcon)
2. 'mysql_escape_string' = Sinds PHP v. 4.0.3 (verouderd)
3. 'addslashes' = Als de rest ook faalt...
****************************/
$secure_func_array = array
(
'mysql_real_escape_string',
'mysql_escape_string',
'addslashes'
);
/****************************
Doormiddel van deze foreach lezen we de hierboven opgegeven array uit
en checken met function_exists of de functie bestaat.
****************************/
foreach($secure_func_array as $sec_array)
{
if(function_exists($sec_array) and !isset($f2use) and empty($f2use))
{ $f2use = $sec_array; }
}
if(!empty($secval))
{
/****************************
Indien de variabele een array bevat, gaan we hier verder. $_POST
en $_GET zijn bijvoorbeeld beiden een array.
****************************/
if(is_array($secval))
{
foreach($secval as $var_name => $var_val)
{
/****************************
Indien de "uitgepakte" var nóg een array bevat,
herbruiken we deze functie om dieper door
te gaan. Je kan zo ongelimiteerd de array's doorlopen
****************************/
if(is_array($var_val))
{
$output[$var_name] = secure_it($var_val);
}
else
{
if(get_magic_quotes_gpc())
{ stripslashes($var_val); }
$output[$var_name] = $f2use($var_val);
}
}
}
else
{
/****************************
Indien de variabele verder geen array bevat komen we hier en
beveiligen de var rechtstreeks
****************************/
if(get_magic_quotes_gpc())
{ stripslashes($secval); }
$output = $f2use($secval);
}
}
if(isset($output) and !empty($output))
{ return $output; }
}
if(isset($_SERVER) and !empty($_SERVER) and is_array($_SERVER))
{ $_SERVER = secure_it($_SERVER); }
if(isset($_POST) and !empty($_POST) and is_array($_POST))
{ $_POST = secure_it($_POST); }
if(isset($_GET) and !empty($_GET) and is_array($_GET))
{ $_GET = secure_it($_GET); }
?>
Reacties
0