Mercurial > defr > DualBlog
view tb.php @ 71:464f4b94ee27
Filtrage de certaines balises HTML, meilleure détection de la validité XML.
Plusieurs choses en une, toute tournant autour d'un meilleur traitement du
commentaire soumis:
- on utilise désormais stripslashes pour correctement gérer la valeur
d'éventuels arguments
- on filtre, via le DOM, les balises qui pourraient s'avérer peut sure, ou
être utilisé pour une attaque de type cross-site scripting. L'utilisation
de getElementsByTagName devrait se charger d'attaque du type <html:script
/> ou l'utilisateur utilise un namespace non standard pour déjouer une
comparaison de chaînes.
author | Franck Deroche <webmaster@defr.org> |
---|---|
date | Thu, 20 Mar 2008 19:45:08 +0100 |
parents | 434751e80c88 |
children | e43b756548b4 |
line wrap: on
line source
<?php header("Content-Type: text/xml"); echo("<?xml version='1.0' encoding='utf-8'?>"); require_once("classes.php"); $Req = new Requete(); $id = $_GET['id']; $Data->Query("SELECT * FROM Messages WHERE num_mess=$id"); $post_infos = $Data->GetRow(); $titre = $Req->Get('title', 'POST', 'Undefined'); $url = $Req->Get('url', 'POST', '#'); $info = $Req->Get('__info', 'POST', -1); if($info == 1) { $error = 0; $message = "Some informations"; } else if($url == "#") { $error = 1; $message = "The url field is needed for trackback to do something usefull !"; } else if($post_infos === 0) { $error = 1; $message = "There's no post with this id"; } else { $excerpt = $_POST['excerpt']; $DateComment = gmdate("Y-m-d H:i:s"); if(strlen($excerpt) > 255) $excerpt = substr($excerpt, 0, 255) . "..."; $Data = new DataAccess(); $Data->Query("INSERT INTO Commentaires(MessId, Auteur, Adresse, Comment, DateComment, isTrackback) VALUES({$id}, '{$titre}', '{$url}', '{$excerpt}', '{$DateComment}', 1)"); $Data->Query("UPDATE Mess SET NbCommentaires=NbCommentaires+1 WHERE num_mess={$id}"); $error = 0; $excerpt = htmlentities(urlencode(substr(strip_tags($post_infos['Message']), 0, 252) . "...") } echo "<response> <error>$error</error> <message>$message</message> <engine>Dual Blog custom made PHP script</engine> <encoding>UTF-8</encoding> <blog>Dual Blog</blog> <title>{$post_infos['Titre']}</title> <url>http://defr.org/post/{$post_infos['num_mess']}</url> <excerpt>$excerpt</excerpt> </response>"; ?>