missouris Posté(e) le 20 mars 2010 Partager Posté(e) le 20 mars 2010 Coucou, Je voudrais sécurisé les variables $_POST, et j'ai pleins de questions qui me vienne car je ne suis pas certain, est-ce que si j'utilise ce code je n'aurais pas besoin d'utilisé mysql_real_escape_string? : preg_match("#^[0-9,]+$#", $_POST['tab']) De même pour celui-ci qui est que pour accepté des lettres et des chiffres? preg_match("#^[0-9A-Za-z]+$#", $_POST['exemple'] ) Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
RaphAstronome Posté(e) le 20 mars 2010 Partager Posté(e) le 20 mars 2010 Normalement non après tu as peut être intérêt à les mettre systématiquement quitte à faire 2 sécurités comme ça si tu oublie une vérification ça risque pas de tout casser. Sinon c'est quoi ces # dans les regexp ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
missouris Posté(e) le 22 mars 2010 Auteur Partager Posté(e) le 22 mars 2010 Merci RaphAstronome! Première chose importante à savoir : une regex (= expression régulière) est toujours entourée de caractères spéciaux appelés délimiteurs.http://www.siteduzero.com/tutoriel-3-14608-les-expressions-regulieres-partie-1-2.html Dans ce regex je ne comprend pas pourquoi il trouve tout les caractères, sauf le 0, alors qu'il s'y trouve: preg_match("#^[ \'a-zA-Z0-9@._-ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ]+$#", $mot) Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 22 mars 2010 Partager Posté(e) le 22 mars 2010 Chez moi le 0 fonctionne bien. Par contre deux choses : * Vu que tu utilises des PCRE, tu devrais plutôt utiliser \w et \s, c'est plus lisible. Et quand on se préoccupe de la sécurité, la lisibilité est un facteur essentiel. * Je trouve que ta regex est un peu large. Pour de la sécu, l'idéal, c'est de restreindre le nombre de caractères autorisés au maximum (et donc d'en autoriser le minimum). Lien vers le commentaire Partager sur d’autres sites More sharing options...
missouris Posté(e) le 24 mars 2010 Auteur Partager Posté(e) le 24 mars 2010 Désoler, je vien de réessayer et ça marche effectivement, et merci encore! c'est plus lisible if(isset($_GET['mot'])){ $mot = $_GET['mot']; }else{ $mot = false; } if(preg_match("#^[\s\w\'@.-äçèéêëöùûü]+$#", $mot)){ echo "existe"; } ?> Lien vers le commentaire Partager sur d’autres sites More sharing options...
ano_634877436262582173 Posté(e) le 28 mars 2010 Partager Posté(e) le 28 mars 2010 Bien que ce sujet soit tag comme résolu, je tiens à préciser que traiter les variables _GET et _POST pour sécuriser un script est la plus mauvaise chose à faire. Cela ne doit en aucun cas se substituer à la fonction MySQL prévue à cet effet, qui elle sera capable de gérer tous les cas particuliers. Doubler les sécurités n'ont aucun intérêt, hormis celui de ralentir l'exécution. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.