Security checklist for developers/fr
Ce document est un supplément à Sécurité pour les développeurs . C'est une liste des tâches courantes de développement et des mesures de sécurité qui doivent être prises.
Liste des points de sécurité à vérifier
Si vous travaillez avec… | avez-vous… |
---|---|
Cookies |
# Tentative pour accéder à la valeur du cookie UserID.
# la valeur renvoyée n'est pas fiable; forçée à int.
$sId = intval( $wgRequest->getCookie( 'UserID' ) );
|
Génération automatique de code |
évité d'utiliser les fonctions telles que
Quelques fois ces fonctionnalités sont réellement nécessaires (visiblement Les fonctions lambda en ligne rendront plus facile l'implémentation des fonctions callback en ligne tout en gardant les bénéfices du code qui a été écrit dans la syntaxe native au lieu d'utiliser les chaînes de caractères.
$str = preg_replace( "!" . preg_quote( $externalStr, '!' ) . "!", $replacement, $str );
|
Programmes externes |
// échapper automatiquement les caractères dangereux
$result = Shell::command( $cmd, '--version' )
->params( 'some', 'extra', 'parameters' )
->execute();
Notez que les anciens |
Formulaires |
|
Données GET |
# vérifier que le paramètre d'action vaut 'purge'
if ( $wgRequest->getVal( 'action' ) == 'purge' ) {
...
|
Sorties (API, CSS, JavaScript, HTML, XML, etc.)Tout contenu généré par MediaWiki est succeptible d'être un vecteur pour les attaques XSS. |
# rawElement() échappe chaque valeur d'attribut
# (qui dans ce cas est fournie par $myClass)
echo Html::rawElement( 'p', [ 'class' => $myClass ] );
|
CSS fournit par l'utilisateurLe CSS fourni par l'utilisateur (disons pour être utilisé dans un attribut |
# déclarer $CSSFromUser comme CSS de l'utilisateur.
echo Html::rawElement( 'p', [ 'style' => Sanitizer::checkCss( $CSSFromUser ) ] );
|
Données POST |
# Vérifier que le paramètre d'action vaut 'render'
if ( $wgRequest->getVal( 'action' ) == 'render' ) {
...
|
Chaînes de requête |
|
Sessions |
|
Anxiété du relecteur |
# $wgRequest n'est pas encore disponible. Remplacé par $_GET.
if ( $_GET['setupTestSuite'] !== null ) {
$setupTestSuiteName = $_GET['setupTestSuite'];
...
|
Requêtes SQL |
|
Contrôles automatiques
Certains de ces problèmes peuvent être vérifiés par phan-taint-check-plugin, nécessaire à tout code MediaWiki de la production Wikimedia. Bien sûr ceci ne reste qu'un outil et il ne peut détecter tous les types de problèmes, voire même les laisser passer alors qu'il en a effectué le contrôle.
Voir aussi