nomisconception
Messages postés2Date d'inscriptionjeudi 8 février 2007StatutMembreDernière intervention22 juin 2009
-
21 juin 2009 à 02:37
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 2012
-
22 juin 2009 à 20:22
Bonjour
Je suis novice dans la programmation en php... Je suis actuellement occupé de créer un site internet pour des amis qui parte faire un tour du monde en solex.
Je leur est faite leur site (je suis étudiant graphiste), mais je ne suis pas programmeur...
J'ai été ennuié par des injections (html iframe-inf..) est je cherche a empêcher l'injection dans le formulaire... htmlentities serais la meilleur solution, mais je ne sais pas ou le mettre dans mon code... Je cherche donc quelqu'un pour aider un pauvre novice qui subis les injections et qui ne sais comment lutter
merci d'avance
voici mon code :
<?php
//
// Verifier que les informations sont postes
//
if($_POST['submit_mess']) {
if(isset($_POST) && isset($_POST['name']) && isset($_POST['surname']) && isset($_POST['mail']) && isset($_POST['message'])) {
extract($_POST);
// Simplifier l'criture de "$_POST["nomdelavarible] en "$nomdelavariable"
if(!empty($name) && !empty($surname) && !empty($mail) && !empty($message)) {
// Dfinition des variables
$message=str_replace(""","'",$message);
$message=str_replace("v","",$message);
$message=str_replace("","",$message);
$message=str_replace("v","",$message);
$message=str_replace("v","",$message);
// Remplacer des caractres spciaux
$destinataire="contact@avelosolex.com";
$expediteur=$mail;
$reponse=$expediteur;
$sujet="Message du site français";
// Retour la ligne : \n
$message="Un nouveau message du site francais est arrive\n
Name : $name \n
Surname : $surname \n
Mail : $mail \n
Message : $message";
$entete="From: $mail";
mail($destinataire, $sujet, $message, $entete);
}
}
}
<html>
<head>
<title>avelosolex.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="css/template.css" rel="stylesheet" type="text/css">
<link href="css/contact.css" rel="stylesheet" type="text/css">
<script type="text/javascript" language="Javascript" >
function check() {
// D?claration de la variable pour le message type qui s'affichera
var msg = 'Merci de remplir les champs présents :\n \n' ;
var lgMsg = msg.length;
// D?claration des variables pour les expressions r?guli?res
var mail = new RegExp(/^[A-Za-z0-9\.\-_]+@[A-Za-z0-9\-]+\.[a-zA-Z\.\-_]{1,}/gi);
// Test des diff?rents champs
// V?rification du nom if (document.form.name.value "" || document.form.name.value "Name") {
msg += '- Name\n';
document.form.name.style.backgroundColor = "#FF0000";
}
// V?rification du pr?nom if (document.form.surname.value "" || document.form.surname.value "Surname") {
msg += '- Surname\n';
document.form.surname.style.backgroundColor = "#FF0000";
}
// V?rification du mail
if (document.form.mail.value == '' || !mail.test(document.form.mail.value)) {
msg += '- Mail (ex : "xxxx@yyyy.zzzz")\n';
document.form.mail.style.backgroundColor = "#FF0000";
}
// V?rification du message if (document.form.message.value 'Message' || document.form.message.value '') {
msg += '- Message\n';
document.form.message.style.backgroundColor = "#FF0000";
}
// Message si les champs ne sont pas remplis correctement
if ( msg.length > lgMsg ) {
alert(msg);
return(false);
// Message si tout est OK
} else {
alert('Merci pour votre message.\nil est envoyé...\ncliquez sur ok pour continuer.\nCette page sera rafreshie.');
return(true);
}
}
//-->
</script>
cs_TropNul
Messages postés340Date d'inscriptiondimanche 18 septembre 2005StatutMembreDernière intervention22 octobre 2009 21 juin 2009 à 13:19
Bonjour,
Tu peux aussi utiliser html_special_chars(), qui lui se restreint à quelques caractères uniquement. Néanmoins, pour htmlentities(), voici comment je ferais :
foreach ($_POST as $key => $valeur) {
$_POST['.$key.']=htmlentities($valeur);
}
Ce code doit être mis avant la fonction extract() que tu utilises.
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 21 juin 2009 à 14:12
tout d'abord fait les vérif que tu fais en js également coté serveur... si je désactive le js je pourrais envoyer n'importe quoi dans les champs ils ne seront pas controlés... le js n'est la que pour le confort de l'utilisateur (évite de recharger la page) pas pour la sécu... .. .
Pour corps de ton mail htmlentities() fera l'affaire mais pense aussi à vérifier l'adresse mail pour éviter une header injection dans ta fonction mail() qui est, avec ton code, beaucoups plus probable et embêtant qu'une pauvre attage xss dans le corps du mail... .. .
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 22 juin 2009 à 20:22
Salut,
QQ remarques en allant :
$message=str_replace(""","'",$message);
$message=str_replace("v","",$message);
$message=str_replace("","",$message);
$message=str_replace("v","",$message);
$message=str_replace("v","",$message);
=>
à quoi cela sert il ?
En plus tu peux le résumer à :
$message=str_replace('"',"'",$message);