12-01-2011, 11:01 AM
(Modification du message : 12-01-2011, 11:43 AM par php_addict.)
(07-01-2011, 09:01 PM)Sephi-Chan a écrit : Exact, mieux vaut utiliser htmlspecialchars pour empêcher le XSS.
En revanche, la remarque sur la corruption des données reste vraie : comme leur nom l'indique, les fonctions html* sont faîtes pour filtrer les chaînes de caractères quand elles sont affichées au sein d'un document HTML.
salut, je me permet de revenir sur ce sujet
effectivement j'ai fait une grosse boulette en corrompant les données de ma bdd...j'avous qu'avec un framework cela n'aurait pas été le cas...
pouvez vous me corriger si je fais une nouvelle boulette svp? :
1) mes $_POST $_GET et $_COOKIES
je les passe automatiquement et systématiquement dans la moulinette suivante ,equivalent de mysql_real_escape_string() car ces données seront utilisées dans les requetes SQL (à part quelques cas exceptionnels comme le renvois de données <textarea> lors d'une erreur de formulaire par exemple)
function encodage($chaine)
{
$search=array("\\","\0","\n","\r","\x1a","'",'"');
$replace=array("\\\\","\\0","\\n","\\r","\Z","\'",'\"');
return(str_replace($search,$replace,$chaine));
}
2) affichage en HTML des données issues de la base de donnée:
avant affichage je passe les données dans cette moulinette:
function bdd2html($chaine)
{
$chaine=htmlspecialchars($chaine, ENT_QUOTES, 'UTF-8');
return($chaine);
}
j'ai bon ? je veux dire contre injection SQL et XSS ?
bonne journée
PS réédité...