Est-ce que les formulaires côté publique (forum par exemple) sont sécurisés contre les attaques par injection SQL ?
En décortiquant un peu le code, je n’ai pas trouvé ce qui nettoierais les valeurs envoyées par l’internaute.
(mysql_real_escape_string, addslashes, htmlentities, ou autre …)
J’ai regardé les fonctions :
_request()
sql_insertq() et les fonctions de base/abstract_sql.php
et sql_quote pour échapper les saisies utilisateurs et les injecter dans la base, en fonction du type de base SQL utilisée (mysql_real_escape_string est spécifique mySQL, addslashes ne devrait jamais être utilisé pour ce type d'usage)
> les fonctions de nettoyage sont réparties à divers endroits :
> écran de sécurité, spip_desinfecte(), safehtml(), interdire_scripts()...
et sql_quote pour échapper les saisies utilisateurs et les injecter dans
la base, en fonction du type de base SQL utilisée (mysql_real_escape_string
est spécifique mySQL, addslashes ne devrait jamais être utilisé pour ce
type d'usage)
C'est pourtant addslashes() qui est utilisé en bout de chaine par
sql_quote() [qui va utiliser _q() ]
Il me semblait me souvenir l’avoir fait sur mySQL aussi mais je vois que non.
C’est donc à corriger sur le même modèle (si fonction mysql_real_escape_string l’utiliser, sinon utiliser addslashes)