probleme de strip_tag

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme de strip_tag

Re: probleme de strip_tag

par moogli » 06 juil. 2012, 09:19

salut,


tu ne nous montre pas comment tu utilise strip_tags la !(et pas strip_data ^^).



je te conseil plutot l'utilisatin de htmlentities à l'affichage du texte.

Prend aussi le soin d'utilise [urlhttp://www.php.net/mysql_real_escape_string]mysql_real_escape_string[/url] pour protéger tes requêtes SQL.
Parce que la nous seulement ta requête n'est pas syntaxiquement correcte (bien la souplesse de php fait p'tet que ça fonctionne) mais en plus l'utilisation de variables issue de formulaire sans aucun traitement te rend sensible a l'injection SQL.
Par exemple ta second requête permet à tout le monde de vider ta base (avec simplement dans $_POST['email'] ' or 1=1;-- qui va demander un email vide ou 1=1 (qui est donc toujours vrai) les -- indique les commentaire tous ce qui peux exister après sera ignoré !

mysql_real_escape_string se fait sur les variables et non sur la chaîne complète.
Utilise la concaténation pour faire quelque chose de propre. ($chaine = 'truc' . $machin . 'bidulle; etc etc).
La ta syntaxe n'est pas correcte parce que les index non numérique sont des chaines de caractères et les chaines de caractères sont délimitées (par des ' ou des ") et que dans une chaine délimitées par des " php ne peux pas savoir si tu veux afficher $_POST ou $_POST[email] (avec email qui serait une constante) ou $_POST['email'] (la bonne syntaxe). tu peux aussi utiliser la syntaxe à accolade ${_POST[email]} pour ne pas utiliser la concaténation mais ce n'est pas $très lisible.


@

probleme de strip_tag

par ooaps » 06 juil. 2012, 00:45

Bonsoir
j ai un système d inscription a une newsletter et je voulais savoir comment sécurise mon code PHP existant pour éviter toute sorte d injection
tel que:<script>alert("encore un site non sécurisé");</script><textarea cols=3 rows=5></textarea>[email protected] comme on me l a fait ce matin.
je cherche donc sur google et dans phpmanual , et je tombe sur la la fonction strip_data mais la je bug sévère pour la mettre en place dans mon code................l 'hallu quoi
Le code injecté a était fait lors d un test dans mon centre de formation pas de flip le site n est en ligne encore il tourne en local au cas ou certain dirais boooooooooooooo!!!!t es nul ca craint, ben ouais mais je cherche la solution :)
Merci

code:
<?php 
		
if(isset($_POST['email']) && !empty($_POST['email'] ))
{
    ### Cas d'une inscription - ajout à la table
    if(isset($_POST['action']) && $_POST['action'] == 'inscription' && $_POST['email'] != $row_Remail['email'])
	{
         
        $insertSQL = sprintf("INSERT INTO tnewsletter (email) VALUES('$_POST[email]')");
    mysql_select_db($database_cnxespaceoptique, $cnxespaceoptique);
	$Result1 = mysql_query($insertSQL, $cnxespaceoptique) or die(mysql_error());
	echo"Votre email a été ajouté à notre base. Vous êtes abonné à notre newsletter mensuelle !" ; 
	}

  elseif (isset($_POST['action']) && $_POST['action'] == 'inscription' && $_POST['email'] = $row_Remail['email'])
  { 
 echo"vous etes déjà inscrit";
  }
 ## Cas d'une désinscription - suppression de la table
    elseif (isset($_POST['action']) && $_POST['action'] == 'desinscription' &&  $_POST ['email'] == $row_Remail['email'])

{
      
       $deleteSQL = sprintf("DELETE FROM tnewsletter WHERE email='$_POST[email]'");
	mysql_select_db($database_cnxespaceoptique, $cnxespaceoptique);
	$Result2 = mysql_query($deleteSQL, $cnxespaceoptique) or die(mysql_error());
	echo "Votre email a été supprimé. Vous êtes désabonné !";
}
	elseif (isset($_POST['action']) && $_POST['action'] == 'desinscription' && $_POST['email'] != $row_Remail['email'])
	{ 
	echo "votre email n'est pas présent dans nos bases de données";
    }
}
?>