Probléme de sécurité

Fermé
All - 5 juin 2011 à 14:16
 Profil bloqué - 6 juin 2011 à 10:19
Bonjour,

Je bricolé un petit site web ou je peut ajouté des news. Je pensais l'avoir sécurisé mais des robot arrive a ajouté des news eu aussi. voici mon code.

Pouvez vous aidé SVP ????

Admin.php


<?php
	session_start();
		if(isset($_SESSION['pseudo']))
		{
	 		Echo '<a>Bonjour </a>';
			echo $_SESSION['pseudo'];
			echo '</br>';
			echo '<a href="../scripts/php/deco.php">Deconection</a>';
			echo '</br>';
			echo '<a href="home.html">Home</a>';
		
			echo '
			</br></br></br>
	
			<a>News</a>
			</br>
			<FORM method="POST" action="../scripts/php/ajoutnews.php">
 				<P>Titre:<br>
 					<INPUT type="text" name="titre" size=30>
 				</p>
 				<P>Numero:<br>
 					<INPUT type="text" name="nbnews" size=30>
 				</p>
 				<P>Contenu:<br>
 					<INPUT type="text" name="contenu" size=30>
 				</p>
 				<INPUT type="submit" value="Ajouter la News">
			</form>
		
			';	
		}
		
		else
			echo'			
				<a href="home.html">Home</a>
				</br>
				
				<FORM method="POST" action="../scripts/php/actionlog.php">
					
					<P>Login<br>
						<input type="text" name="login" value="" size="20" id="login"/>
					<br>
					</p>
					<P>Mot de passe<br>
					<input type="password" name="mdp" value="" size="20" MAXLENGTH="15" id="mdp"/>
						</p>	
				<INPUT type="submit" value="connection"/>
				</FORM>	
				';	
									
?>



ajoutnews.php


<?php
	include('logbd.php');
	
	$jour=date(d);
	$mois=date(m);
	$annee=date(Y);
	$heure=date(H);
	$minute=date(i);
	$titre=$_POST['titre'];
	$contenu=$_POST['contenu'];
	$nbnews=$_POST['nbnews'];


	mysql_query ("INSERT INTO news VALUES ('', '$jour', '$mois', '$annee', '$heure', '$minute', '$titre', '$contenu', '$nbnews')");

	echo '<a>La news a bien ete ajouter.</a>';
	echo '<meta http-equiv="refresh" content="2; URL=../../pages/admin.php">';

?> 


logdb.php


<?php
mysql_connect("adresse", "login", "mdp");
		mysql_select_db("mdp");
?>

7 réponses

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 499
Modifié par avion-f16 le 5/06/2011 à 15:04
Salut,

Il faut aussi faire la vérification isset() dans le fichier ajoutnews.php (et aussi le session_start() )
La pensée mène le monde.
0
bonjour,

C'est a dire ? Comment vérifie t'ont isset() ?
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 499
5 juin 2011 à 15:24
Comme tu le fais dans Admin.php :
<?php
session_start()

if(isset($_SESSION['pseudo'])) {
    // Connecté
} else {
    // Interdit
}
?>
0
Ha ok merci ?. Et après cela serra top en sécurité ou il y a d'autre problème ? Mon code te semble t'il bien pensé ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 499
5 juin 2011 à 16:12
Il y a encore la faille CSRF.

« Mon code te semble t'il bien pensé ? »
Il y a moyen d'améliorer pas mal de point.
Une liste non-exhaustive au premier regard :
- Utiliser PDO à la place des fonctions mysql_...
- Pour la date, utiliser un seul champ contenant le timestamp ou la date au format anglais. (cf. ici).
- Utiliser une architecture MVC
0
Profil bloqué
6 juin 2011 à 10:19
Surtout si tu n'es pas en charge de gérer les newsletters toi-même (système de droits)
0
je vais regardé sa de prés, je suis encore novice en webmastering et le tu me parle un peut chinois.
0
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
6 juin 2011 à 09:45
Bonjour,

Une solution simple, vous rajoutez un champ qui sera invisible à l'affichage. Par exemple, l'age du contributeur:

<INPUT type="text" name="age" class='monAge'>

et le css associé à monAge:

.monAge {
display: none;
}

Résultat: ce champ ne s'affichera pas.

Mais un crétin d'automate spammeur verra ce champ qui n'est pas de type hidden et le remplira.

A la validation du message, si $_POST['age'] contient kékechose, hop => poubelle direct!

Efficacité? Très très efficace... Mis en application sur de nombreux sites perso et pros et plus d'emmerdeurs....

A+
0