2011-02-01 3 views
1

Donc cette semaine, je vais sécuriser mon application PHP autant que possible. Je récupère beaucoup de données de la base de données, j'ai donc besoin de conseils de base pour m'aider à sécuriser le code ci-dessous.Sécuriser les données récupérées avec PHP

Merci, je suis juste un débutant.

<?php 

mysqli_select_db($connect,"users"); 
$select="select * from members"; 
$result=mysqli_query($connect,$select); 
$row=mysqli_fetch_array($result); 


//this is what i want to secure -- down 

$a = $row['name']; 
$b = $row['add']; 
?> 

Merci.

+0

À votre avis, qu'est-ce qui n'est pas sûr? Vous stockez des données dans des variables PHP sur le serveur. Rien n'a encore été envoyé au navigateur. –

+1

De quelle manière voulez-vous le sécuriser? Autant que je puisse voir, il n'y a aucune vulnérabilité là-bas. Maintenant, il peut y avoir dans le plus grand code, mais vous devez spécifier de quoi vous parlez – ircmaxell

Répondre

1

Encode tout d'entrée/base de données utilisateur que vous souhaitez afficher dans le navigateur avec htmlspecialchars() pour éviter XSS.

+1

N'utilisez pas 'htmlentities'. Utilisez la fonction appropriée, qui dans ce cas serait ['htmlspecialchars'] (http://us.php.net/manual/fr/function.htmlspecialchars.php), et vous devez ** définir ** le jeu de caractères approprié. 'htmlentities' n'a aucun rapport avec la sécurité, à part le fait qu'il s'agit d'un surensemble de fonctionnalités htmlspecialchars. – ircmaxell

+0

UPS! Vous avez absolument raison, merci! J'ai changé ma réponse de htmlentities en htmlspecialchars. – Marc

0

Vous devez essentiellement sécuriser AVANT d'envoyer des données à la base de données (contre l'injection SQL), et AVANT de sortir en html (contre XSS). Ces choses sont importantes, alors qu'à l'intérieur de votre script presque tout est à peu près inoffensif (et peut conduire à des erreurs sur les codes suivants, btw).

0

Avez-vous une sécurité lorsque vous saisissez des données dans votre base de données? Votre code peut être convertible en SQL Injection si vous ne désinfectez pas vos données lors de l'insertion dans la base de données. Pour cela - vérifiez cette fonction http://php.net/manual/en/mysqli.real-escape-string.php

Une autre chose est que html et javascript peuvent être insérés dans votre base de données, et si vous ne l'échappez pas et que vous imprimez ces données en HTML, vous pouvez passer à Cross-Site-Scripting. Vous devriez échapper vos données en utilisant http://bg.php.net/manual/en/function.htmlentities.php. ou http://bg.php.net/manual/en/function.htmlspecialchars.php

La sécurité est un grand sujet, mais cela peut être un début pour vous - échapper d'abord votre entrée, puis prendre soin de la sortie.

Questions connexes