2011-07-05 3 views
0

TLDR; Je veux activer la consignation de base de données de xss_clean() lors du remplacement de données malveillantes.Extension de CodeIgniter Security.php pour activer la journalisation


Je veux activer la journalisation de base de données de la fonction xss_clean() dans security.php, au fond ce que je veux faire est de savoir si l'entrée d'alimentation je xss_clean() avec succès a été identifié pour avoir malveillant données dans ce qui a été filtré ou non.

Donc, en gros:

$str = '<script>alert();</script>'; 
$str = xss_clean($str); 

Que se passerait-il idéalement pour moi est:

  1. Nettoyer la chaîne de XSS
  2. Retour le nettoyage $ str
  3. d'informations d'entrée sur les données mal (et éventuellement l'utilisateur connecté) à la base de données

Pour autant que je peux voir dans le fichier Security.php, il n'y a rien qui s'occupe de cela pour moi, ou quelque chose qui pourrait le faire par des hameçons, etc. Je me trompe bien sûr.

Puisqu'aucun enregistrement du nombre de remplacements effectués dans Security.php - suis-je forcé d'étendre Security.php, copier coller le code actuel dans la fonction d'origine et le modifier pour le supporter? Ou existe-t-il une solution plus propre et plus sûre pour les futures mises à jour de CodeIgniter (et en particulier les fichiers falsifiés/étendus avec)?

Répondre

1

Vous auriez besoin d'étendre la classe de sécurité, mais il n'est absolument pas nécessaire de copier et coller du code si tout ce dont vous avez besoin est un journal de l'entrée/sortie. Quelque chose le long des lignes de ce qui suit vous permettra de le faire:

Class My_Security extends CI_Security { 

    public function xss_clean($str, $is_image = FALSE) { 
     // Do whatever you need here with the input ... ($str, $is_image) 

     $str = parent::xss_clean($str, $is_image); 

     // Do whatever you need here with the output ... ($str) 

     return $str; 
    } 

} 

De cette façon, vous achevons juste la fonction existante et de jouer avec l'entrée/sortie. Vous pourriez être plus compatible en utilisant la fonction PHP get_args pour transmettre de façon transparente l'objet arguments, si vous étiez préoccupé par les changements apportés à la méthode sous-jacente.

+0

Ok, cela a résolu la moitié de mon problème. En ce moment j'essaie de comprendre comment charger un de mes modèles. Est-ce la bonne chose à faire ici? J'ai essayé de faire '$ this-> load = load_class ('Loader', 'core'), 'et ensuite faire' $ this-> load-> model (' users_model '), 'mais je reçois un écran blanc à '$ this-> load-> model();' – Tobias

Questions connexes