Rensegnement : [Nouveau probleme de CSS ou PHP...]

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 : Rensegnement : [Nouveau probleme de CSS ou PHP...]

par walfrat » 17 févr. 2007, 23:11

d'accord merci

maintenant j'ai un autre probleme

J'essaye de faire une carte sur lesquelles si'mpleterait des lien

Voici une ébauche :
function carte()
{
  $carte = array(
    "1"=>array(
      "Nom"=>"http://127.0.0.1/Temps-radies/Carte/zone_neutre_(0%3b0).jpg",
      "X"=>"0",
      "Y"=>"0",
      "Z"=>"0",
      "taille_x"=>"12",
      "taille_y"=>"6",
      "Batiments"=>array(
        "1"=>array(
          "Nom"=>"http://127.0.0.1/Temps-radies/Carte/plaines_irradies_(-1%3b0).jpg",
          "X"=>"1",
          "Y"=>"-3",))));
return $carte;
}
$carte = carte();
?>

<body>
  <table style = "background-image : <?php echo "url(\"".$carte["1"]["Nom"]."\")"; ?> ">
<?php

for($y=$carte["1"]["taille_y"];$y>=0;$y--)
{
echo "<tr>";
  for($x=0;$x<=$carte["1"]["taille_x"];$x++)
    {echo "<td>";
      if(isset($carte["1"]["Batiments"]))
        {
          for($batiments=1;$batiments<=count($carte["1"]["Batiments"]);$batiments++)
          {
            if(($x==$carte["1"]["Batiments"][$batiments]["X"])AND($y==$carte["1"]["Batiments"][$batiments]["Y"]))
            {$image =$carte["1"]["Batiments"][$batiments]["Nom"];
            echo "<IMG src=\"".$image."\" width = '30px' height = '30px'/>";
            }
          }
        }echo "</td>";
    }
echo "</tr>";

}?>
</table>
</body>
          
C'est une version d'essaie elle est juste censé affiché une grande carte dans laquelle en 1;-3 on verrai une petite image de 30*30
Mais ca marche pas...

Aucune parse error aucun message d'erreur j'ai une page blanche qui s'affiche

le probleme doit donc venir de : <table style = "background-image : <?php echo "url(\"".$carte["1"]["Nom"]."\")"; ?> ">

Mais je sais pas si c'estle php ou le css qui est en cause...

par Jules Petibidon » 17 févr. 2007, 21:54

hello,

get_magic_quote_gpc sert à vérifier si la directive magic_quotes_gpc est activée dans la configuration de php...
elle n'accepte aucun argument et revoie true ou false.

la directive applique un addslashes sur toutes les données GET, POST etc.
dans un monde idéal, ce serait suffisant pour sécuriser contre les injections, mais nous ne vivons pas dans un monde idéal ;) et comble du bonheur,lorsqu'on utilise mysql_real_escape_string sur une chaine déja échappée par addslashes, ca fout le souk... donc v'la :)

edit : la fonction quote_smart qui se trouve sur php.net est presque parfaite, a la limite ca vaut pas le coup de se prendre plus la tete, utilise la :)

par walfrat » 17 févr. 2007, 19:52

je me suis mal exprimé pour le 2) car y'avait plutot deux question qu'en une mais c'est pas grave

Donc la fonction mysql_real_escape_string, en gros..., verifie la chaine de caractere pour empecher les injection SQL c'est bien ca ?

Pour get_magic_quotes_gpc() je comprend toujours pas malgré la doc...par exmeple peux tu m'expliquer ca :
if (!get_magic_quotes_gpc()) {
$lastname = addslashes($_POST['lastname']);
} else {
$lastname = $_POST['lastname'];
}
Deja que contient le () de la fonction ?

contient elle par exemple la variable $_POST['lastname']
et auquel cas si retourne false ou 0 :
on ajoute des slashes ce qui signifirais simplement que cette fonction sert a ajouter des slash pour eviter les probleme d'insertion dans la BDD
'est bien ca ?

par AB » 17 févr. 2007, 19:39


Voici ce que j'ai du mal a comprendre

1/get_magic_quotes_gpc() si c'est true ou retire les slash mis quelle sont les condition necessaire pour avoir true et false ?

2/mysql_real_escape_string dans cet exemple je ne comprend pas ca : !is_numeric($value) c'est a dire qu'on aplique la fonction uniquement a tout ce qui n'est pas nombre et comment agit cette fonction sur ce qu'a entré le visiteur ?
1/Ta première question est incompréhensible, une fonction ne peut pas renvoyer à la fois vrai et faux! renseignes-toi sur la fonction get_magic_quotes_gpc()
2/Oui car si c'est un nombre, il est impossible d'écrire le texte nécessaire pour faire une injection mysql

par walfrat » 17 févr. 2007, 19:17

<?php
// Quote variable to make safe
function quote_smart($value)
{
   // Stripslashes
   if (get_magic_quotes_gpc()) {
       $value = stripslashes($value);
   }
   // Quote if not integer
   if (!is_numeric($value)) {
       $value = "'" . mysql_real_escape_string($value) . "'";
   }
   return $value;
}

// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
   OR die(mysql_error());

// Make a safe query
$query = sprintf("SELECT * FROM users WHERE user=%s AND password=%s",
           quote_smart($_POST['username']),
           quote_smart($_POST['password']));

mysql_query($query);
?> 
Voici ce que j'ai du mal a comprendre

get_magic_quotes_gpc() si c'est true ou retire les slash mis quelle sont les condition necessaire pour avoir true et false ?

mysql_real_escape_string dans cet exemple je ne comprend pas ca : !is_numeric($value) c'est a dire qu'on aplique la fonction uniquement a tout ce qui n'est pas nombre et comment agit cette fonction sur ce qu'a entré le visiteur ?

par AB » 17 févr. 2007, 19:13

Bonjour,

Tu as un excellent exemple d'injection mysql et les moyens de t'en protéger ici mysql_real_escape_string()

Rensegnement : [Nouveau probleme de CSS ou PHP...]

par walfrat » 17 févr. 2007, 17:48

Bonjour

J'ai deja cherché sur les injection SQL mais j'aimerai savoir quelque chose :

la solution ultime c'est la fonction mysql_escape_string()

Mais j'aimerais savoir : il faut que je l'applique a tout, ou uniquement au variable qui sont en relation dans la BDD , ou autre chose ...

Pour l'instant mes seul précaution sont la vérification systématique des entrée POST via une fonction

En voici un extrait est elle efficace ?
function verification($type,$infos)
{
/*
Fonction qui a pour but de vérifier la validité des information entré 
Type 1 : Nom : caracteres autorisé : a-zA-Z0-9&#' + accents
Type 2 : Image : Verification a l'aide dun REGEX de la validité du lien (soit du site soit du dossier Images soit du dossier Carte)
Type 3 : Nombre positif 
Type 4 : Nombre relatif
Type 5 : Bloc de texte : caratcere autorisé : a-zA-Z0-9&#([{}])@ç_- + accents
Type 6 : Nombre entier compris entre 1 et 5
Type 7 : Nombre entier compris entre 20 et 90
Type 8 : mot de passe
*/
  if($type==1)
  {
    if(!(preg_match("{^[a-zA-Z0-9&\#\'àéèâêûîôöïüëä\t\n\r\s]{1,}$}",$infos)))//note : l'i = l\'i => il faut autoriser l'antislash et l'apostrophe =>\\\'
    {
    return 0;
    }
    else
    {
    return 1;  
    }
  }
[...]
}
[/code]

Enfin j'aimerais savoir quel sont en général les fonction de sécurité et comment on s'en sert exactement

J'ai déja cherché sur le forum et vu beaucoup d'exemple mais quand je vois des tas de fonction que je ne connais pas et que j'arrive pas a comprendre sur php.net (i'm not very good in English...^^) comment on s'en sert et en quoi sont ele un élément de sécurité ....