From b4110217b01124e811998a44f12f9c33549c1aed Mon Sep 17 00:00:00 2001 From: Albirew Date: Sat, 28 May 2022 16:49:39 +0200 Subject: [PATCH] sanitized _POST (#1) fix for XSS --- classaddcom.php | 2 +- classaddcomprojet.php | 2 +- classcontact.php | 5 +---- classdiremerci.php | 2 +- classerrorbox.php | 5 +---- classes/CommentNews.php | 11 +++-------- classes/CommentProjet.php | 7 ++----- classnotation.php | 1 + design/js/interface.js | 20 +++++++++++++++----- 9 files changed, 26 insertions(+), 29 deletions(-) diff --git a/classaddcom.php b/classaddcom.php index 4186b26..df35e68 100644 --- a/classaddcom.php +++ b/classaddcom.php @@ -1,6 +1,7 @@ ajouterCom($nom, $contenu, $idnews); } - ?> diff --git a/classaddcomprojet.php b/classaddcomprojet.php index ecfe2c7..366aacb 100644 --- a/classaddcomprojet.php +++ b/classaddcomprojet.php @@ -1,6 +1,7 @@ ajouterCom($nom, $contenu, $idprojet); } - ?> diff --git a/classcontact.php b/classcontact.php index d729dab..38b118b 100644 --- a/classcontact.php +++ b/classcontact.php @@ -1,9 +1,7 @@  diff --git a/classdiremerci.php b/classdiremerci.php index 241fb10..cf267f6 100644 --- a/classdiremerci.php +++ b/classdiremerci.php @@ -1,6 +1,7 @@ ajouterMerci($id_news, $confirmation); } - ?> diff --git a/classerrorbox.php b/classerrorbox.php index 1bf511f..850a5c1 100644 --- a/classerrorbox.php +++ b/classerrorbox.php @@ -1,9 +1,7 @@  diff --git a/classes/CommentNews.php b/classes/CommentNews.php index 1e5b9f2..0e420bd 100644 --- a/classes/CommentNews.php +++ b/classes/CommentNews.php @@ -41,8 +41,7 @@ require 'Commentaires.php'; | HARDCORE HENTAI HEADQUARTER | |############################################################| |###########_____SITE V3 - POLE DEVELOPPEMENT_____###########| - - + * @author Yumemi * @version 1.0 * */ @@ -51,24 +50,20 @@ require 'Commentaires.php'; public function ajouterCom($pseudo, $commentaire, $idNews) { //Protection des variables - //Plus besoin de mysl_real_escape_string en php5, - //la fonction execute protège les variables de l'injection sql $pseu = htmlspecialchars($pseudo); + $pseu = filter_var($pseu,FILTER_SANITIZE_STRING); $com = htmlspecialchars($commentaire); + $com = filter_var($com,FILTER_SANITIZE_STRING); try { $ajout = $this->connect->prepare('INSERT INTO commentaire_news SET pseudo = :pseu, commentaire = :comm, id_news = :idNews, timestamp = :time'); - $ajout->bindValue(':pseu', $pseu); $ajout->bindValue(':comm', $com); $ajout->bindValue('idNews', $idNews, PDO::PARAM_INT); $ajout->bindValue(':time', time(), PDO::PARAM_INT); - $ajout->execute(); - $ajout->closeCursor(); - echo 'Votre commentaire a bien été ajouté'; } catch(Exception $e) diff --git a/classes/CommentProjet.php b/classes/CommentProjet.php index 49d77fd..b1b8e39 100644 --- a/classes/CommentProjet.php +++ b/classes/CommentProjet.php @@ -29,7 +29,6 @@ require 'Commentaires.php'; * Cette classe hérite de la classe Commentaires. * * Elle sert à gérer les commantaires des projets du site de la HHH. - ___ ___ ___ __| | | |__ ___ / / / /| | | |\ \ \ \ @@ -52,21 +51,19 @@ require 'Commentaires.php'; { //Protection des variables $pseu = htmlspecialchars($pseudo); + $pseu = filter_var($pseu,FILTER_SANITIZE_STRING); $com = htmlspecialchars($commentaire); + $com = filter_var($com,FILTER_SANITIZE_STRING); try { $ajout = $this->connect->prepare('INSERT INTO commentaire_projets SET pseudo = :pseu, commentaire = :comm, id_projet = :idPro, timestamp = :time'); - $ajout->bindValue(':pseu', $pseu); $ajout->bindValue(':comm', $com); $ajout->bindValue('idPro', $idProjet, PDO::PARAM_INT); $ajout->bindValue(':time', time(), PDO::PARAM_INT); - $ajout->execute(); - $ajout->closeCursor(); - echo 'Votre commentaire a bien été ajouté'; } catch(Exception $e) diff --git a/classnotation.php b/classnotation.php index 35e5e97..3c47563 100644 --- a/classnotation.php +++ b/classnotation.php @@ -3,6 +3,7 @@ require 'classes/ProjetManager.php'; if(isset($_POST["fd_note"]) && !empty($_POST["fd_note"]) && isset($_POST["fd_projet"]) && !empty($_POST["fd_projet"])){ + $_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); // prevent XSS $note=$_POST["fd_note"];// !!!!! attention, valeur de type string pas int, de -1 à 2 $idprojet=$_POST["fd_projet"];// !!!!! attention, valeur de type string echo "note : ".$note."
"; // !!!!! attention, valeur de type string pas int diff --git a/design/js/interface.js b/design/js/interface.js index 4819007..24af1f1 100644 --- a/design/js/interface.js +++ b/design/js/interface.js @@ -403,8 +403,13 @@ function getcommnews(news) { // prévisualiser un commentaire $("#preview_commentaire_button").click(function(){ $("#commpreview, #commpreviewp").remove(); - var pseudo=$("#depot_commentaire_depotbox").find("input[name='pseudo']").val(); - var commentaire=nl2br($("#depot_commentaire_depotbox").find("textarea[name='commentaire']").val()); + var sanitizeHTML = function (str) { + return str.replace(/[^\w. ]/gi, function (c) { + return '&#' + c.charCodeAt(0) + ';'; + }); + }; + var pseudo=encodeURI($("#depot_commentaire_depotbox").find("input[name='pseudo']").val()); + var commentaire=sanitizeHTML(nl2br($("#depot_commentaire_depotbox").find("textarea[name='commentaire']").val())); if(pseudo.trim()==="" || commentaire.trim()===""){ alert("Il n'y a rien à prévisualiser banane, il faut remplir tous les champs."); return; @@ -415,10 +420,15 @@ function getcommnews(news) { // pour envoyer un commentaire $("#depot_commentaire_button").click(function(){ + var sanitizeHTML = function (str) { + return str.replace(/[^\w. ]/gi, function (c) { + return '&#' + c.charCodeAt(0) + ';'; + }); + }; // on envoi un nouveau commentaire var idnews=$(this).attr("data-commnewsid"); - var pseudo=$("#depot_commentaire_depotbox").find("input[name='pseudo']").val(); - var commentaire=$("#depot_commentaire_depotbox").find("textarea[name='commentaire']").val(); + var pseudo=encodeURI($("#depot_commentaire_depotbox").find("input[name='pseudo']").val()); + var commentaire=sanitizeHTML($("#depot_commentaire_depotbox").find("textarea[name='commentaire']").val()); var dumbot=$("#depot_commentaire_depotbox").find("input[name='dumbot']").val(); postcommnews(idnews,pseudo,commentaire,dumbot); @@ -429,7 +439,7 @@ function getcommnews(news) { function postcommnews(news,pseudo,commentaire,dumbot){ // vérification des champs obligatoire - if(pseudo.trim()==="" || commentaire.trim()===""){ + if(pseudo.trim()==="" || commentaire.trim()==="" || pseudo.trim()==="">" || commentaire.trim()==="">") { var verif=false; }else { var verif=true;