Avec le développement d'Internet, PHP est largement utilisé comme un langage de développement de sites Web populaire. Cependant, les sites Web de PHP sont également confrontés à plusieurs menaces de sécurité. Afin de protéger les sites Web et les données des utilisateurs, les développeurs doivent prendre une série de mesures d'optimisation de la sécurité. Cet article présentera des politiques de sécurité PHP pratiques et fournira un exemple de code pertinent.
Rester PHP à jour est la base pour assurer la sécurité du site Web. Chaque nouvelle version corrige généralement les vulnérabilités dans l'ancienne version, il est donc essentiel de passer à la dernière version dans le temps.
La vérification et le filtrage de l'entrée des utilisateurs sont un moyen efficace de prévenir les opérations malveillantes. Vous pouvez utiliser des fonctions intégrées PHP telles que filter_var () et strip_tags () pour s'assurer que l'entrée est légale.
// Vérifiez et filtrez les adresses e-mail d'entrée
$email = $_POST['email'];
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
// Contribution légale,Traitement ultérieur
} else {
// Entrée illégale,Donner un message d'erreur
}
L'injection SQL est un moyen d'attaque courant. En utilisant des instructions de prétraitement ou des requêtes paramétrées, la base de données peut être effectivement évitée par le fonctionnement de malveillance.
// Effectuer une requête en utilisant la déclaration de prétraitement
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();
while($row = $result->fetch_assoc()) {
// Traiter les résultats de la requête
}
Les mots de passe utilisateur doivent être générés et stockés avec des mots de passe solides. PHP fournit des fonctions telles que Password_Hash () et Password_verify () pour gérer la sécurité du mot de passe.
// Générer une valeur de hachage de mot de passe
$password = $_POST['password'];
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
// Vérifier le mot de passe
$entered_password = $_POST['password'];
if(password_verify($entered_password, $hashed_password)) {
// La vérification du mot de passe a réussi
} else {
// La vérification du mot de passe a échoué
}
Dans les environnements de production, l'affichage des erreurs doit être désactivé et les journaux d'erreur doivent être enregistrés dans un fichier pour empêcher la fuite d'informations sensibles.
// Désactiver l'affichage d'erreur
ini_set('display_errors', 'Off');
// Journal du journal dans le fichier
ini_set('error_log', '/path/to/error.log');
La gestion des sessions est essentielle pour protéger les données des utilisateurs. Les cookies sécurisés doivent être utilisés, les délais de session raisonnables doivent être définis, les données sensibles doivent être cryptées et les séances inactives doivent être détruites.
// Utilisez des séances de sécuritécookie
session_set_cookie_params([
'secure' => true,
'httponly' => true,
'samesite' => 'Lax'
]);
// Définir le délai d'expiration de la session(Deuxième)
ini_set('session.gc_maxlifetime', 1800);
Les attaques XSS obtiennent des informations utilisateur en injectant un code malveillant. Lors de la sortie des données de l'utilisateur, HTMLSpecialChars () doit être utilisé pour l'évasion.
// Sortie d'échappement
echo htmlspecialchars($_POST['name']);
Les stratégies d'optimisation de sécurité des sites Web de PHP incluent la mise à jour de la version PHP, la vérification et le filtrage des entrées, la prévention de l'injection SQL, le chiffrement des mots de passe, la gestion des erreurs, la gestion des sessions et la protection XSS. En mettant en œuvre ces mesures, les développeurs peuvent considérablement améliorer la sécurité du site Web et protéger les données des utilisateurs contre les menaces.