2011-09-01 3 views
0

Je travaille sur une publication en ligne qui acceptera les soumissions du grand public. Mon éditeur WYSIWYG est configuré pour supprimer tous les tags de classe/style incorporés (à l'exception de ceux autorisés par l'éditeur), et je vérifie également cela sur le serveur quand il est sauvegardé. En tant que troisième couche de défense, je voudrais implémenter certaines surcharges CSS pour annuler toute directive CSS incorporée dans un certain élément de la page. Est-ce possible? J'imagine pas pour les attributs style intégrés, mais peut-être pour les blocs <style></style> et les attributs class intégrés?Annulation du formatage soumis par l'utilisateur avec CSS

+0

Oui, mais cela reste un problème de spécificité - la règle la plus spécifique gagne. – Todd

Répondre

0

Vous pouvez utiliser !important dans votre feuille de style pour vous assurer que votre règle l'emporte sur tout autre style, en ligne ou autrement, etc. Un exemple concret: http://jsfiddle.net/tw16/WpktM/

<div class="override" style="background:salmon; height: 50px; width: 50px;"></div> 

.override{ 
    height: 200px !important; 
    width: 200px !important; 
    background: skyblue !important; 
} 
+0

Ils pourraient également utiliser! Important cependant, alors peut-être str_replace juste pour s'assurer qu'ils ne sont pas? –

+0

@pez: Oui. Il doit définitivement supprimer tous les utilisateurs '! Important'. – tw16

0

Il sera plus facile et plus fiable simplement interdire les balises de lien et de style (ou avoir leur ouverture < transformée en & lt;), puis utiliser un analyseur XML pour supprimer l'attribut de style des balises individuelles avant de les insérer dans la base de données. Soit dit en passant, un moyen rapide et sale pour se débarrasser de tous les attributs indésirables est d'utiliser simplement une chaîne de remplacer et d'échanger =&#61;.