2011-02-23 5 views
1

Est-il possible de créer un déclencheur qui, lors de l'insertion ou de la mise à jour d'une ligne, peut utiliser la fonction REPLACE pour remplacer les caractères par leurs équivalents échappés (en particulier, sécuriser html) pour toutes les colonnes dans la table sans avoir à connaître tous les noms de champs (pour que cette fonction puisse être appliquée à plusieurs tables). Je suis d'accord 115% que ce genre de chose devrait toujours être fait au niveau de l'application, mais en raison de circonstances uniques, je voudrais ajouter cela comme une sécurité au niveau de la base de données.Utiliser un déclencheur MySQL pour remplacer l'entrée

Je suis très nouveau pour les déclencheurs, prenez donc facile sur moi, mais je veux faire quelque chose à l'effet de:

create trigger if not exists makeHTMLsafe after insert on tablename 
begin 
    loop over all columns in tablename 
    new.value = REPLACE(old.value,"<","&lt;") 
end 

Répondre

0

Escaping est complexe et sujette aux erreurs.
Vous devriez jamais essayer de rouler votre propre fonction d'échappement, il est juste risqué. Au lieu de rendre les choses plus sûres, vous serez alors beaucoup moins sécurisé.
Utilisez les fonctions d'échappement html spécialisées de votre frontal.

Lorsque vous utilisez PHP, htmlentities est votre meilleur pari:

http://php.net/manual/en/function.htmlentities.php
Voir aussi: What are the best practices for avoiding xss attacks in a PHP site

Questions connexes