Salut a tous et a toutes,
j'ai entrepris la conception d'un scripte possible a utilisé comme base de chaque site.
Alors pour le tester, quoi de mieux que de demander de l'aide a plusieurs communautés.
<?php
/* ----------
* Beta 1.0 -
* ----------
* Merci aux personnes qui m'ont permi
* de prendre consiance de mes erreurs
* et de leur divers aides :
* ----------
* www.developpez.net
* www.newbiecontest.org
---------- */
// Filtres de nettoyage
function filtre_nettoyage($valeur)
{
$valeur = trim($valeur);
$valeur = htmlentities($valeur, ENT_QUOTES);
// $valeur = strip_tags($valeur); // SHOULD -- You never know
return $valeur;
}
// Filtre pour fichier
function filtre_fichier($valeur, $chemin)
{
$chemin = dirname(__FILE__).$chemin;
if(!strstr($valeur, ".."))
{
if(!file_exists($chemin))
{
echo "Erreur : Le fichier demandé n'existe pas ou n'est pas autorisé !";
exit();
}
else
{
return $valeur;
}
}
else
{
echo "Erreur : Tentative interdite !";
exit();
}
}
// Filtre pour shell (use filtre_nshell($valeur, TRUE | FALSE))
function filtre_nshell($valeur, $chaine)
{
if($chaine)
{
$valeur = escapeshellarg($valeur);
}
else
{
$valeur = escapeshellcmd($valeur);
}
return $valeur;
}
// Parseur de securisation
function parse_secur($parseCode)
{
if (is_array($parseCode))
{
foreach ($parseCode as $clef => $valeur)
{
$valeur = filtre_nettoyage($valeur);
$parseCode[$clef] = utf8_enc($valeur);
}
}
else
{
$parseCode = filtre_nettoyage($parseCode);
$parseCode = utf8_enc($parseCode);
}
return $parseCode;
}
// Verif email/url/ipv4/ipv6
function parse_verif($valeur)
{
$parseCode = filtre_nettoyage($valeur);
if(filter_input($parseCode, FILTER_VALIDATE_EMAIL))
{
$parseCode = filter_var($parseCode, FILTER_SANITIZE_EMAIL);
}
elseif(filter_input($parseCode, FILTER_VALIDATE_URL))
{
$parseCode = filter_var($parseCode, FILTER_SANITIZE_ENCODED);
}
elseif(filter_input($parseCode, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)) {}
else {$erreur = false;}
if(!isset($erreur))
{
return $parseCode;
}
else {echo 'Les argument passé ne sont pas valides';}
}
// Function debug
function mod_debug($valeur)
{
echo '<br />';
var_dump($valeur);
$memUse = round((memory_get_usage()/1024)/1024, 2);
echo '<br />',$memUse,' / Mo.';
}
Un "strip_tags" est présent en plus d'un "htmlentities", car j'avais croisé un détournement possible du "htmlentities" corrigé comme cela. Mais impossible de retrouver ce sujet ...
Je ne suis pas persuadé du point de vue pertinent de "utf8_enc" vue qu'il est aussi présent avec le "htmlentities".
Le tout n'est pas codé en Objet, c'est un chois personnel. Mais si vous avez des indications sur un réel besoin de l'utilisation d'Objet sur ce genre de projet. Je suis tout ouie
Remarques retenue :- Faille dans le filtre shell pour ";" => remède trouvé pour ça "escapeshellcmd"
- Faille dans "fichier" si chemin non dev => corrigé avec "dirname(__FILE__)"
- "ENT_IGNORE" est déprécié (dangereux)
- "strip_tags" inutile a son emplacement, retrait ou mod pour "allowable_tags"
- Retrais du force UTF-8 de htmlentities, conservation de "utf8_enc" a la place
Des retours, des corrections ?
Merci

PS : Wao je n’étais pas venu depuis ... sur ce site, qu'il soit toujours actif est génial. Ca donne envie de reprendre les challenges après toutes ces années.