Ceci est une ancienne révision du document !
ébauche
Sécurité
La sécurité dans les modules est primordiale ! A quoi sert de sécuriser le noyau npds si les modules sont de vrai passoire….
Veuillez lire La Sécurité auparavant
Considération de Sécurisation
(et retro compatibilité) d’un module pour NPDS
Si l’on prend l’architecture d’un module (dans cette note nous utiliserons module_1) : /modules
module_1 index.php bloc.php /admin adm.php /retro-compat
Ce module contient :
- des scripts PHP à sa racine
- un fichier permettant la réalisation d’un bloc NPDS
- des include
- une administration via l’admin-plugins de NPDS
Sécurisation des INCLUDE
Script lancé par modules.php (dans notre exemple : index.php )
Au début de chaque fichier PHP (après le cartouche de commentaires décrivant le module, licence, …) il est nécessaire de rajouter :
// For More security if (!eregi("modules.php", $PHP_SELF)) { die(); } if (strstr($ModPath,"..") || strstr($ModStart,"..") || stristr($ModPath, "script") || stristr($ModPath, "cookie") || stristr($ModPath, "iframe") || stristr($ModPath, "applet") || stristr($ModPath, "object") || stristr($ModPath, "meta") || stristr($ModStart, "script") || stristr($ModStart, "cookie") || stristr($ModStart, "iframe") || stristr($ModStart, "applet") || stristr($ModStart, "object") || stristr($ModStart, "meta")) { die(); } // For More security // Retro compatibilité SABLE if (!function_exists("sql_connect")) { include ("modules/$ModPath/retro-compat/mysql.php"); } // Retro compatibilité SABLE
Script lancé par admin.php (dans notre exemple : admin/adm.php )
Au début de chaque fichier PHP (après le cartouche de commentaires décrivant le module, licence, …) il est nécessaire de rajouter :
// For More security if (!eregi("admin.php", $PHP_SELF)) { die(); } if (strstr($ModPath,"..") || strstr($ModStart,"..") || stristr($ModPath, "script") || stristr($ModPath, "cookie") || stristr($ModPath, "iframe") || stristr($ModPath, "applet") || stristr($ModPath, "object") || stristr($ModPath, "meta") || stristr($ModStart, "script") || stristr($ModStart, "cookie") || stristr($ModStart, "iframe") || stristr($ModStart, "applet") || stristr($ModStart, "object") || stristr($ModStart, "meta")) { die(); } // For More security // Retro compatibilité SABLE if (!function_exists("sql_connect")) { include ("modules/$ModPath/retro-compat/mysql.php"); } // Retro compatibilité SABLE''
Script servant à la réalisation d’un BLOC NPDS
Au début de chaque fichier PHP (après le cartouche de commentaires décrivant le module, licence, …) il est nécessaire de rajouter :
// For More security if (!function_exists("Mysql_Connection")) { die(); } // For More security // Retro compatibilité SABLE if (!function_exists("sql_connect")) { include ("modules/$ModPath/retro-compat/mysql.php"); } // Retro compatibilité SABLE
:!:Plus généralement tous fichier PHP contenu dans un module (à l’exclusion d’un fichier de paramétrage,d’installation) contenant l’utilisation de variables global de NPDS (par exemple $ModStart, $ModPath, $language, …) doit être sécurisé !