1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
/**
* protéger une chaine de caractère des injections, SQL OU NON
* @param string chaine bah la chaine - non null
* @param string précise s'il s'agit de protéger une chaine en vue d'une insertion dans une base de données : oui : <> null et <> 0; non : nul ou 0
* @param string corr si différent de null, corrige au lieu de supprimer : oui : <> null et <> 0; non : nul ou 0
* @return string la chaine protégée / génére l'erreur - fontion alert_erreur()
*/
function str_protege($chaine,$sql=0,$corr=0)
{
if (is_string(@$chaine) & isset($chaine)) {
$chaine = trim($chaine);
// éviter attaques dos : désactivé
//$chaine = escapeshellcmd($chaine);
//$chaine = escapeshellarg($chaine);
//$chaine = htmlentities($chaine, ENT_QUOTES, 'ISO-8859-1');
// éviter le javascript
$aAllowedTags = array();
$aDisabledAttributes = array('onabort', 'onactivate', 'onafterprint', 'onafterupdate',
'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate',
'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload',
'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick',
'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavaible',
'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate',
'ondrag', 'ondragdrop', 'ondragend', 'ondragenter', 'ondragleave',
'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate',
'onfilterupdate', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout',
'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete',
'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave',
'onmousemove', 'onmoveout', 'onmouseover', 'onmouseup', 'onmousewheel',
'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange',
'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart',
'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect',
'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
if (empty($aDisabledAttributes))
{
$chaine = strip_tags($chaine, implode('', $aAllowedTags));
} else {
$chaine = preg_replace('/<(.*?)>/ie', "'<' . preg_replace(array('/javascript:[^\"\']*/i', '/(" . implode('|', $aDisabledAttributes) . ")[ \\t\\n]*=[ \\t\\n]*[\"\'][^\"\']*[\"\']/i', '/\s+/'), array('', '', ' '), stripslashes('\\1')) . '>'", strip_tags($chaine, implode('', $aAllowedTags)));
}
// éviter caracs non autorisés en sql, insérer les quotes
if($sql != 0) {
$chaine = strip_tags($chaine);
$chaine = mysql_real_escape_string($chaine);
} else {
// désactivé car fait dans le preg_replace
//if (!get_magic_quotes_gpc()) { $chaine = addslashes($chaine); }
// échapper les cractères php \ + * ? [ ^ ] $ ( ) { } = ! < > | :
//$chaine = preg_quote($chaine);
if(isset($corr) & @$corr != '' & $corr != 0)
{
$chaine = htmlspecialchars($chaine, ENT_QUOTES, 'ISO-8859-1');
} else
{
$chaine = strip_tags($chaine);
}
}
// bloquer le script en cas d'attaque
$chaine = str_replace(';', ';', $chaine);
return $chaine;
} else {
alert_erreur('TYPE INCCORECT',__line__,__file__);
}
} |
Partager