Maison >développement back-end >tutoriel php >Comment définir le délai d'expiration sous forme PHP pour renforcer les mesures de sécurité

Comment définir le délai d'expiration sous forme PHP pour renforcer les mesures de sécurité

WBOY
WBOYoriginal
2023-06-24 09:21:101504parcourir

Le formulaire PHP est une méthode interactive couramment utilisée dans le développement de sites Web. Il peut recevoir les entrées de l'utilisateur et transmettre les données au serveur pour traitement. Cependant, étant donné que les données du formulaire sont transmises via HTTP, il existe certains risques de sécurité. L'un d'eux est qu'il est facile pour des attaquants malveillants d'utiliser des attaques par relecture pour effectuer des attaques de falsification de données ou de déguisement. Afin d'empêcher de telles attaques, nous pouvons définir le délai d'expiration dans le formulaire PHP et renforcer les mesures de sécurité. Cet article explique comment définir le délai d'expiration dans les formulaires PHP pour renforcer la protection de la sécurité.

  1. Qu'est-ce que le délai d'expiration

Le délai d'expiration signifie fixer un délai avant que le formulaire ne soit soumis. S'il n'est pas soumis dans le délai spécifié, le formulaire deviendra invalide. Ce mécanisme empêche les formulaires d'être utilisés par des attaquants malveillants pour effectuer des falsifications de données ou dissimuler des attaques par le biais d'attaques par relecture. Dans le même temps, le délai d'expiration peut également limiter la durée de validité du formulaire pour éviter que des données inutiles n'occupent les ressources du serveur.

  1. Comment définir le délai d'expiration

Vous pouvez utiliser la technologie de session pour définir le délai d'expiration en PHP L'exemple de code est le suivant :

<?php
session_start();
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
    session_unset();
    session_destroy();
}
$_SESSION['LAST_ACTIVITY'] = time();
?>

La signification du code ci-dessus est que si l'heure actuelle moins l'heure. de la dernière opération est supérieure à 1800 secondes (30 minutes ), la session est détruite.

  1. Comment utiliser le délai d'expiration pour améliorer la sécurité du formulaire

Après avoir défini le délai d'expiration, nous devons également vérifier les données du formulaire lors de la soumission du formulaire. Par exemple, nous pouvons effectuer une vérification des données et un filtrage sur les champs clés pour empêcher SQL. injection, menaces de sécurité telles que les attaques XSS et les attaques CSRF. Voici quelques mesures spécifiques :

3.1 Vérification des données

Lors de la réception des données de soumission du formulaire, nous pouvons utiliser la fonction de filtrage de PHP pour filtrer, vérifier et nettoyer les données de soumission du formulaire afin d'améliorer la sécurité des données. La fonction de filtre peut vérifier le type de données, la longueur, la casse et les caractères spéciaux. L'exemple de code est le suivant :

<?php
// 过滤输入的字符串
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);

// 验证电子邮箱格式
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);

// 校验输入的 URL
$url = filter_input(INPUT_POST, 'url', FILTER_VALIDATE_URL);

// 验证IP地址
$ip = filter_input(INPUT_POST, 'ip', FILTER_VALIDATE_IP);
?>

3.2 Empêcher l'injection SQL

Avant que les données du formulaire ne soient stockées dans la base de données, nous pouvons utiliser la liaison de paramètres et les caractères d'échappement. et d'autres méthodes pour empêcher l'injection SQL. Parmi eux, la liaison de paramètres peut utiliser la bibliothèque PDO ou mysqli, et les caractères d'échappement peuvent utiliser des fonctions telles que les barres obliques ajoutées. L'exemple de code est le suivant :

<?php
// 参数绑定防止 SQL 注入
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username');
$stmt->bindParam(':username', $username);
$stmt->execute();

// 转义字符串防止 SQL 注入
$username = addslashes($_POST['username']);
$password = addslashes($_POST['password']);
?>

3.3 Prévention des attaques XSS

Lors de la sortie des données du formulaire, nous pouvons filtrer les données soumises pour empêcher les attaques XSS. Vous pouvez utiliser les htmlspecialchars de PHP et d'autres fonctions pour convertir les caractères spéciaux en caractères d'échappement HTML. L'exemple de code est le suivant :

<?php
// 输出转义后的字符串
echo htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
?>

3.4 Prévenir les attaques CSRF

Afin d'empêcher les attaques CSRF, nous pouvons ajouter un csrf_token au formulaire pour vérifier. la source du formulaire Est-ce légal ? Vous pouvez utiliser des sessions PHP pour stocker des jetons. L'exemple de code est le suivant :

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $csrf_token = $_POST['csrf_token'];
    if (!isset($_SESSION['csrf_token']) || $_SESSION['csrf_token'] !== $csrf_token) {
        die('非法请求');
    }
}
$csrf_token = md5(uniqid(rand(), true));
$_SESSION['csrf_token'] = $csrf_token;
?>
<form method="post">
    <input type="hidden" name="csrf_token" value="<?php echo $csrf_token;?>">
    <input type="text" name="username">
    <input type="password" name="password">
    <button>提交</button>
</form>
  1. Résumé

En définissant le délai d'expiration des formulaires PHP, vous pouvez efficacement empêcher les attaques par relecture et les attaques de déguisement, renforçant ainsi la sécurité des formulaires. De plus, nous pouvons renforcer davantage la sécurité du formulaire grâce à la vérification des données, en empêchant l'injection SQL, en empêchant les attaques XSS et en empêchant les attaques CSRF. Dans le développement de sites Web, le renforcement de la protection de la sécurité est crucial. Nous devons commencer par tous les aspects pour améliorer la sécurité du site Web.

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!

Déclaration:
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