Maison > développement back-end > tutoriel php > Mesures de sécurité pour PHP et CGI : Comment empêcher le piratage de votre site Web

Mesures de sécurité pour PHP et CGI : Comment empêcher le piratage de votre site Web

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2023-07-22 16:12:01
original
877 Les gens l'ont consulté

Mesures de protection de sécurité pour PHP et CGI : Comment empêcher les sites Web d'être attaqués par des pirates informatiques

Avec la popularité et le développement d'Internet, les problèmes de sécurité des sites Web ont attiré de plus en plus d'attention. PHP et CGI, en tant que langages de programmation Web couramment utilisés, doivent également renforcer les mesures de sécurité pour prévenir les attaques de pirates. Cet article présentera quelques mesures de protection de sécurité pour PHP et CGI et fournira des exemples de code correspondants.

  1. Valider les entrées utilisateur

Les entrées utilisateur sont la partie la plus vulnérable aux pirates informatiques. En validant et en filtrant les entrées utilisateur, le risque d'être attaqué peut être considérablement réduit. Voici quelques exemples courants de codes de validation des entrées utilisateur.

1.1. Pour la saisie de chaîne, vous pouvez utiliser la fonction de filtre pour filtrer les entrées de l'utilisateur afin d'éviter les attaques par injection courantes.
Exemple de code :

$input = $_GET['input'];
$filteredInput = filter_var($input, FILTER_SANITIZE_STRING);
Copier après la connexion

1.2. Pour la saisie numérique, vous pouvez utiliser la fonction is_numeric() pour vérifier que la saisie est un nombre valide.
Exemple de code :

$input = $_GET['input'];
if(!is_numeric($input)){
    die("Invalid input");
}
Copier après la connexion

1.3. Pour les entrées dans des formats spécifiques tels que les adresses e-mail et les URL, des expressions régulières peuvent être utilisées pour la vérification.
Exemple de code :

$email = $_GET['email'];
if(!preg_match("/^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$/", $email)){
    die("Invalid email");
}
Copier après la connexion
  1. Sécurité du mot de passe

Le mot de passe est une protection importante pour les comptes d'utilisateurs. Il est très nécessaire de prendre certaines mesures pour améliorer la sécurité des mots de passe.

2.1. Utiliser la fonction de hachage de mot de passe

Lors du stockage des mots de passe utilisateur, vous devez utiliser une fonction de hachage pour crypter et stocker le mot de passe afin de protéger la sécurité du mot de passe utilisateur.
Exemple de code :

$password = $_POST['password'];
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
// 存储 $hashedPassword 到数据库
Copier après la connexion

2.2. Exigences en matière de force du mot de passe

Définissez les exigences en matière de force du mot de passe, telles que la longueur du mot de passe, sa complexité, etc., pour rappeler aux utilisateurs de définir des mots de passe sécurisés.
Exemple de code :

$password = $_POST['password'];
if(strlen($password) < 8){
    die("密码长度至少为8位");
}
Copier après la connexion
  1. Téléchargement de fichiers

La fonction de téléchargement de fichiers est l'une des fonctions courantes sur les sites Web, mais elle constitue également un risque potentiel pour la sécurité. Voici quelques mesures de sécurité courantes.

3.1. Vérification du type de fichier

Vérifiez la légalité du fichier en vérifiant l'extension du fichier ou le type MIME pour éviter le téléchargement de certains fichiers malveillants.
Exemple de code :

$file = $_FILES['file'];
$allowedExtensions = ['jpg', 'png', 'gif'];
$allowedMimeTypes = ['image/jpeg', 'image/png', 'image/gif'];
if(!in_array(pathinfo($file['name'], PATHINFO_EXTENSION), $allowedExtensions) 
    || !in_array($file['type'], $allowedMimeTypes)){
    die("不允许上传该类型的文件");
}
Copier après la connexion

3.2. Sécurité du chemin de stockage des fichiers

Assurez-vous que le chemin où le fichier est stocké après le téléchargement est sûr pour éviter les problèmes de sécurité causés par une fuite de chemin de fichier.
Exemple de code :

$savePath = '/path/to/save';
$filename = uniqid().'.jpg'; // 使用唯一的文件名
move_uploaded_file($_FILES['file']['tmp_name'], $savePath.'/'.$filename);
Copier après la connexion
  1. Protection contre les injections SQL

L'attaque par injection SQL est l'une des méthodes d'attaque courantes. Voici quelques mesures courantes pour empêcher l'injection SQL.

4.1. Utiliser des instructions préparées

Utilisez des instructions préparées pour lier des paramètres afin d'empêcher les attaques par injection SQL.
Exemple de code :

$username = $_POST['username'];
$password = $_POST['password'];
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$stmt->execute([':username' => $username, ':password' => $password]);
Copier après la connexion

4.2. Utiliser des requêtes paramétrées

Utilisez des requêtes paramétrées pour transmettre les entrées de l'utilisateur en tant que paramètres à l'instruction de requête de base de données afin d'empêcher les attaques par injection SQL.
Exemple de code :

$username = $_POST['username'];
$password = $_POST['password'];
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->execute([$username, $password]);
Copier après la connexion

En résumé, grâce à une série de mesures de protection de sécurité telles que la vérification des entrées de l'utilisateur, la sécurité des mots de passe, la sécurité du téléchargement de fichiers et la prévention des attaques par injection SQL, la sécurité du site Web peut être considérablement améliorée et le risque d'être attaqué par des pirates peut être considérablement amélioré. Pendant le processus de développement, il est nécessaire d’accorder plus d’attention à ces aspects afin de protéger la sécurité des informations du site Web et des utilisateurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal