Sécurité de base pour un site

Répondre
LA GLOBULE
le 09/10/2007 à 15:10
LA GLOBULE
Oui ne serait ce que pour éviter les erreurs SQL : si tu insères le moindre texte avec des quotes, tu vas te manger des mysql_error().
i M@N
le 09/10/2007 à 22:09
i M@N
Hello.

Commence par protéger tout ce qui vient de $_GET ou $_POST (je te laisse chercher pour htmlentities et son ENT_QUOTES) :
<?php

if (isset($_GET['variable'])) $variable = htmlentities($_GET['variable'], ENT_QUOTES); else $variable = '';
if (isset($_POST['variable'])) $variable = htmlentities($_POST['variable'], ENT_QUOTES); else $variable = '';

?>


Ensuite si ta variable à un nombre défini d'états possibles (true / false, 0 / 1, a / b / c ...) utilises un switch (ça aussi je te laisse chercher) comme ça pas de surprise.

Là tu commences à être plus tranquille ...

@+...
One Love, One Heart, One Unity.
LA GLOBULE
le 10/10/2007 à 00:58
LA GLOBULE
Oui, mais le htmlentities n'est pas à faire avant l'insertion en base, mais à l'affichage sur une page web.
jackbocar
le 11/10/2007 à 19:40
jackbocar
Bonjour,

Je réponds à vos solutions : j'ai remis les protections des données telles qu'elles me sont proposées sur mon ouvrage.

J'ai le résultat en bas de page tel qu'il s'affiche à l'écran.

Que dois-je enlever dans la protection ?
Ou remplacer et par quoi ?
Ou changer quoi ?



Mon code d'insertion :
<?php
if (isset($_POST['titre']) && isset($_POST['news'])) {
if ($db = @mysqli_connect('localhost', 'jackbocar', 'xxxxxxx')) {
require_once 'stripFormSlashes.inc.php';
mysqli_select_db($db, 'xxxxxxxx');
mysqli_query($db, sprintf( 'INSERT INTO my_news (titre, news) VALUES (\'%s\', \'%s\')',
mysqli_real_escape_string($db, $_POST['titre']),
mysqli_real_escape_string($db, $_POST['news'])));
echo 'Entrée sauvée.';
mysqli_close($db);
} else {
echo 'Pas de Connexion.';
}
}
?>


La protection des données appellée avec require_once

<?php
function stripFormSlashes($arr) {
if (!is_array($arr)) {
return stripslashes($arr);
} else {
return array_map('stripFormSlashes', $arr);
}
}

if (get_magic_quotes_gpc()) {
$_GET = stripFormSlashes($_GET);
$_POST = stripFormSlashes($_POST);
}
?>


Mon formulaire :

<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
Titre : <input type="text" name="titre" /><br />
<textarea name="news" cols="50" rows="10"></textarea>
<input type="submit" value="Save" />
</form>

Lecture des données :
<?php
if ($db = @mysqli_connect('localhost', 'jackbocar', 'xxxxxxx')) {
mysqli_select_db($db, 'xxxxxxx');
$result = mysqli_query($db, 'SELECT * FROM my_news');
while ($row = mysqli_fetch_object($result)) {
printf('<table border="0" cellpadding="0" cellspacing="0" width="800"><tr valign="top"><td width="100">%s</td><td width="600">%s</td></tr></table><table border="0" cellpadding="0" cellspacing="0" width="800"><tr valign="top"><td>%s</td></tr></table><br />',
htmlspecialchars($row->id),
htmlspecialchars($row->titre),
htmlspecialchars(nl2br($row->news))
);
}
mysqli_close($db);
} else {
echo '<b>Connection failed.</b>';
}
?>


Le résultat tel qu'il apparaît à l'écran :

1 Test news 1
Nous sommes le jeudi 11 octobre 2007. Je sors de chez le dentiste et je n'ai rien aux dents.<br /> <br /> Tr&egrave;s heureux de n'avoir pas due affronter le d&eacute;sagr&eacute;ment de la roulette et des fraises.<br /> <br /> J'ai engag&eacute;e la conversation avec un retrait&eacute; qui attendait son tour et ensuite avec sa femme, venue le rejoindre dans la salle d'attente.<br />

2 Test news 2
Nous sommes le jeudi 11 octobre 2007. Je sors de chez le dentiste et je n'ai rien aux dents.<br /> <br /><br /> Tr&egrave;s heureux de n'avoir pas due affronter le d&eacute;sagr&eacute;ment de la roulette et des fraises.<br /> <br ><br /> J'ai engag&eacute;e la conversation avec un retrait&eacute; qui attendait son tour et ensuite avec sa femme, venue le rejoindre dans la salle d'attente.

3 Test news 3
Nous sommes le jeudi 11 octobre 2007. Je sors de chez le dentiste et je n'ai rien aux dents.<br /> <br /><br /> Tr&egrave;s heureux de n'avoir pas due affronter le d&eacute;sagr&eacute;ment de la roulette et des fraises.<br /> <br ><br /> J'ai engag&eacute;e la conversation avec un retrait&eacute; qui attendait son tour et ensuite avec sa femme, venue le rejoindre dans la salle d'attente.

Merci de vos réponses et de votre aide.

Jack Bocar
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours