faille ou pas ?
Dernière réponse : dans Programmation
Bonjour,
c'est peut être une question bête, mais j'ai remarqué quelque chose sur mon site (en local): j'ai mis une pagination sur l'index, comme sa:
es-ce que c'est normal que quand je tape
c'est écrit:
je ne devrai pas être redirigé vers l'index ? Car quend j'essaye de faire ça sur d'autres sites je suis automatiquement redirigé vers l'index
c'est peut être une question bête, mais j'ai remarqué quelque chose sur mon site (en local): j'ai mis une pagination sur l'index, comme sa:
http://localhost/monsite/index.php?page=numéro de la page
es-ce que c'est normal que quand je tape
http://localhost/monsite/index.php?page=<a href="http://google.fr" target="_blank">http://google.fr</a>
c'est écrit:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\monsite\news.php on line **
je ne devrai pas être redirigé vers l'index ? Car quend j'essaye de faire ça sur d'autres sites je suis automatiquement redirigé vers l'index
Autres pages sur : faille
Lassé par la pub ? Créez un compte
C'est normal !
dans ton include, tu a preciser une extension. Php, ou TXT je sais pas...
pour tester, il te faut une page dont l'extensions est .php (ou autre c toi qui a choisit dans le code de l'include)
ma page de test est celle la : http://trust-in-us.fr/test.php
essaye sans le .php
met donc /?page=http://trust-in-us.fr/test
Si il t'affiche le texte et l'image, t'es vulnerable, sinon t'es protégé !
apres pour mettre une redirection euh ca doit etre quelque chose du genreelse {
include("index.php");
}
dans ton include, tu a preciser une extension. Php, ou TXT je sais pas...
pour tester, il te faut une page dont l'extensions est .php (ou autre c toi qui a choisit dans le code de l'include)
ma page de test est celle la : http://trust-in-us.fr/test.php
essaye sans le .php
met donc /?page=http://trust-in-us.fr/test
Si il t'affiche le texte et l'image, t'es vulnerable, sinon t'es protégé !
apres pour mettre une redirection euh ca doit etre quelque chose du genreelse {
include("index.php");
}
voici mon script:
j'ai rajouté:
maintenant quand je remplace le chiffre par un numéro de page inexistant, je n'obtient plus l'erreur, es-ce que c'est bon ?
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("site");
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5');
while ($donnees = mysql_fetch_array($retour))
// PAGINATION
$nombreDeMessagesParPage = 5;
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM news');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_messages'];
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
//PAGINATION
if (isset($_GET['page']))
{
$page = intval($_GET['page']);
}
else
{
$page = 1;
}
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
$reponse = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage) or die(mysql_error($page = 1));
while ($donnees = mysql_fetch_array($reponse))
{
$contenu = nl2br(stripslashes($donnees['contenu']));
echo '<h2>';
echo $donnees['titre'];
echo '</h2>';
echo '<div class="descr">Postée le ';
echo date('d/m/Y à H\hi', $donnees['timestamp']);
echo '</div>';
echo '';
echo $contenu;
echo '<br><br><br>';
}
echo '<FORM name="formulaire" method="POST"><select size="1" name="url" onChange="navigation()" style="color:#BDB76B; width:50px; border:0px; background:#111111;">';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<option value="index.php?page=' . $i . '">' . $i . '</option>';
}
echo '</select></form><br><br><noscript>Si vous voulez que le sélécteur de page fonctionne, vous devez activer le javascript</noscript>';
mysql_close();
?>
j'ai rajouté:
or die(mysql_error($page = 1))
maintenant quand je remplace le chiffre par un numéro de page inexistant, je n'obtient plus l'erreur, es-ce que c'est bon ?
Euh, non faut pas rajouter ça...
Sinon, en fait ça vient de ton intval($_GET['page']), vu qu'il n'y a aucun chiffre, ton intval doit retourner 0 je pense, donc tu fais une requête LIMIT -5,5 ce qui est incompréhensible en SQL.
Remplace
par
Et supprime ton or die(mysql_error($page=1)).
Edit: par contre le début de ton code est incompréhensible...
Utilité ?
Sinon, en fait ça vient de ton intval($_GET['page']), vu qu'il n'y a aucun chiffre, ton intval doit retourner 0 je pense, donc tu fais une requête LIMIT -5,5 ce qui est incompréhensible en SQL.
Remplace
$page = intval($_GET['page']);
par
$page = intval($_GET['page']); if($page==0) $page=1;
Et supprime ton or die(mysql_error($page=1)).
Edit: par contre le début de ton code est incompréhensible...
$retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0, 5'); while ($donnees = mysql_fetch_array($retour)) // PAGINATION $nombreDeMessagesParPage = 5;
Utilité ?
tu fais une requête que tu n'utilises même pas.
T'as un while qui sert à rien vu qu'il a pas de crochet, il exécute que l'instruction suivante, soit redéfinir 5 fois $nombredeMessagesParPage = 5, super essentiel comme étape.
Essaie de mettre une boucle de 1000 histoire que tu sois sûr que la variable soit bien définie
T'as un while qui sert à rien vu qu'il a pas de crochet, il exécute que l'instruction suivante, soit redéfinir 5 fois $nombredeMessagesParPage = 5, super essentiel comme étape.
Essaie de mettre une boucle de 1000 histoire que tu sois sûr que la variable soit bien définie
Lassé par la pub ? Créez un compte