Comment créer un site Web PHP hautement sécurisé, résumé des problèmes de sécurité auxquels il faut prêter attention lors de la création d'un site Web

伊谢尔伦
Libérer: 2023-03-11 22:54:02
original
1847 Les gens l'ont consulté

Tout le monde sait que PHP est actuellement le langage de programmation d'applications Web le plus populaire. Mais comme d’autres langages de script, PHP présente également plusieurs failles de sécurité dangereuses. Dans ce didacticiel, nous examinerons donc quelques conseils pratiques pour vous aider à éviter certains problèmes de sécurité PHP courants.

Astuce 1 : Utilisez les rapports d'erreurs appropriés

Généralement pendant le processus de développement, de nombreux programmeurs oublient toujours de créer des rapports d'erreurs de programme, ce qui est une erreur extrêmement grave, car un rapport d'erreurs approprié est non seulement le meilleur outil de débogage, mais également un excellent outil de détection des vulnérabilités de sécurité, qui vous permet de trouver autant de problèmes que possible avant de mettre réellement l'application en ligne.
Bien sûr, il existe de nombreuses façons d'activer le rapport d'erreurs. Par exemple, dans le fichier de configuration php.in , vous pouvez définir l'activation du

démarrer le rapport d'erreurs au moment de l'exécution
error_reporting(E_ALL );

Désactiver le rapport d'erreurs
error_reporting(0);

Astuce 2 : ne pas utiliser l'attribut Weak de PHP

Plusieurs propriétés PHP doivent être définies sur OFF. Généralement, ils existent en PHP4, mais leur utilisation est déconseillée en PHP5. Surtout en PHP6, ces attributs ont été supprimés.

Enregistrer les variables globales
Lorsque register_globals est défini sur ON, cela équivaut à définir Environment, GET, POST, COOKIE ou les Les variables du serveur sont toutes définies comme des variables globales. Pour le moment, vous n'avez pas besoin d'écrire $_POST['username'] pour obtenir la variable de formulaire 'username'. Vous avez seulement besoin de '$username' pour obtenir cette variable.
Alors vous devez penser que puisque définir Register_globals sur ON présente des avantages si pratiques, pourquoi ne pas l'utiliser ? Parce que si vous faites cela, cela entraînera de nombreux problèmes de sécurité et cela pourrait également entrer en conflit avec les noms de variables locales.
Par exemple, jetez un œil au code suivant :

if( !empty( $_POST[‘username'] ) && $_POST[‘username'] == ‘test123′ && !empty( $_POST[‘password'] ) && $_POST[‘password'] == “pass123″ )
{
$access = true;
}
Copier après la connexion

Si register_globals est défini sur ON lors de l'exécution, l'utilisateur n'a qu'à transmettre access=1 dans une chaîne de requête pour obtenir le script PHP Exécutez-en n'importe quoi.
Désactivez les variables globales dans .htaccess

php_flag register_globals 0
Copier après la connexion

Désactivez les variables globales dans php.ini

register_globals = Off
Copier après la connexion

Désactivez les magic_quotes_gpc similaires, magic_quotes_runtime , magic_quotes_sybase Ces citations magiques
sont définis dans le fichier .htaccess

php_flag magic_quotes_gpc 0
php_flag magic_quotes_runtime 0
Copier après la connexion

sont définis dans php.ini

magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
Copier après la connexion

Astuce 3 : Validez la saisie de l'utilisateur

Bien sûr, vous pouvez également valider la saisie de l'utilisateur. Vous devez d'abord connaître le type de données que vous attendez de l'utilisateur. De cette façon, vous pouvez être prêt, du côté du navigateur, à empêcher les utilisateurs de lancer des attaques malveillantes contre vous.

Astuce 4 : évitez les attaques de scripts intersites par les utilisateurs

Dans les applications Web, il est simple d'accepter les saisies des utilisateurs dans le formulaire, puis de commenter les résultats. Lors de l'acceptation d'une saisie utilisateur, il serait très dangereux d'autoriser la saisie au format HTML, car cela permettrait également à JavaScript de s'immiscer de manière imprévisible et de s'exécuter directement. Même s'il n'existe qu'une seule de ces vulnérabilités, les données des cookies peuvent être volées et le compte de l'utilisateur peut être volé.

Astuce 5 : Empêchez les attaques par injection SQL

PHP ne fournit fondamentalement aucun outil pour protéger votre base de données, donc lorsque vous vous connectez à la base de données , Vous pouvez utiliser la fonction mysqli_real_escape_string suivante.

$username = mysqli_real_escape_string( $GET[‘username'] );
mysql_query( “SELECT * FROM tbl_employee WHERE username = '”.$username.“‘”);
Copier après la connexion

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