2010-11-01 4 views
1

Je suis nouveau sur PDO et j'ai juste commencé à l'utiliser. J'ai déjà inséré, mis à jour et supprimé des données en l'utilisant et il est très simple d'utiliser les bases.Comment faire pour que les requêtes de sélection PDO HTML soient sécurisées?

Dans un environnement de test, j'ai inséré des codes HTML dans la base de données. Comme:

<a href="google.com">Google</a> 
<b>Bold text</b> 
<u>Underlined text</u> 

etc ...

J'essaie ceci, parce que je suis l'aide d'un éditeur WYSIWYG simple sur mon site pour les utilisateurs et je veux être sûr que les données sont en sécurité.

En utilisant les éléments suivants:

$stmt = $dbh->prepare("SELECT * FROM naruto WHERE id = :id AND name = :name"); 

/*** bind the paramaters ***/ 
$stmt->bindParam(':id', $id, PDO::PARAM_INT); 
$stmt->bindParam(':name', $name, PDO::PARAM_STR, 5); 


/*** execute the prepared statement ***/ 
$stmt->execute(); 

/*** fetch the results ***/ 
$result = $stmt->fetchAll(); 

/*** loop of the results ***/ 
foreach($result as $row) 
    { 
    echo $row['id'].'<br />'; 
    echo $row['name']; 
    echo $row['image']; 
    } 

Où est le nom des différents codes HTML, le HTML est tout simplement exécuté. Le texte est donc en gras et non dans le format </b>.

Je me demande s'il existe une fonction permettant à PDO d'arrêter cela. Ou dois-je simplement utiliser htmlentities et strip_tags?

Merci à l'avance

Répondre

1

Les bases de données ne se soucient pas particulièrement si les données stockées dans eux est le balisage HTML ou non, et non plus des couches d'abstraction de base de données telles que PDO ... il est juste une chaîne dans la mesure où ils sont concerné. C'est à vous de gérer les données en HTML ou en texte brut.

+0

Je ne le savais pas. Merci beaucoup pour votre réponse. – moonwalker

2

L'utilisation de requêtes paramétrées protège votre base de données contre les données incorrectes. Il ne protégera pas votre HTML car c'est une couche complètement différente.

Si vous souhaitez autoriser certains HTML, vous devez exécuter les données (juste avant de les afficher à l'utilisateur) via quelque chose qui affichera le code HTML que vous souhaitez autoriser.

Je crois que HTML Purifier est l'un des outils de choix pour les utilisateurs de PHP qui veulent faire cela.

+0

Génial. C'est ce que je cherchais! Merci beaucoup! – moonwalker

Questions connexes