pense-bête de bruno sanchiz

Accueil > Programmation > PHP > PHP:trucs de "sécurité" informatique

PHP:trucs de "sécurité" informatique

Publié le 8 avril 2017, dernière mise-à-jour le 26 août 2019, 5 visites, 23646 visites totales.

sécurité , d’après François Gannaz ( francois.gannaz at silecs.info ) et rootme

  • white list pas black list
  • codesniffer pour vérifier ( php-codesniffer )
  • gestion des erreurs

trucs divers

    • php-xdebug sur les serveurs de développement
  • validations
    • La validation javascript est une aide pour l’utilisateur, pas pour le serveur.
    • ctype_ et is_
ctype_digit
ctype_digit("[0-9]+" ) True
ctype_digit([0-9]+ ) True si nb<-127 ou > 128
False si -127<=nb<=128
ctype_digit( "5.3" ) False
ctype_digit(divers ) False

ctype_alnum() - Check for alphanumeric character(s)
ctype_xdigit() - Check for character(s) representing a hexadecimal digit
is_numeric() - Finds whether a variable is a number or a numeric string
is_int() - Find whether the type of a variable is integer
is_string() - Find whether the type of a variable is string
ctype_digit() - Check for numeric character(s)
setlocale() - Set locale information

    • filter_input
  • sortie html
  • Protéger les caractères sensibles : htmlspecialchars($var) ;
    Protéger tous les caractères : htmlentities($var,...) et mb_htmlentities($var,...)
    ENT_COMPAT|ENT_QUOTES|ENT_NOQUOTES
    Enlever les balises HTML : striptags($text) ;
    Encodage spécifique pour URL : urlencode($var) ;
    ext/Filter peut non seulement valider mais aussi filtrer en sortie avec FILTER_SANITIZE_*
  • Comment s’assurer qu’un champ caché n’a pas été modifié ?
    • Envoyer en parallèle un hash contrôlant la valeur.
  • Comment éviter qu’en rechargeant la page on relance une action ?
    • Stocker dans une table un identifiant unique, créé avec uniqid("blah-",True)
  • suprimer les retorus à la ligne
    preg_replace( '/\n|\r|\t|%0A|%0D|%08|%09/i' , '' , $_POST[ 'subject' ]);
exemples de captcha
asus
créé par moi
phpcaptcha
  • destruction des variables

utiliser plusieurs php

pb : pas de phpmyadmin ? cd /var/www/html && git clone --depth=1 --branch=STABLE https://github.com/phpmyadmin/phpmyadmin.git

[bruno sanchiz]