Lorsque vous utilisez PHP pour le développement Web, vous devez faire attention à certains éléments de configuration de sécurité et désactiver certaines fonctions pour empêcher les utilisateurs de causer par inadvertance divers problèmes.
1. Désactivez la fonction d'invite d'erreur php
Changez display_errors sur OFF dans php.ini, ou ajoutez error_reporting(0).
Utilisez error_reporting(0); Exemple d'échec :
<?php
error_reporting(0);
echo 555
echo 444;
?>
Copier après la connexion
Erreur :
Erreur d'analyse : erreur d'analyse, attente de « », » ou « ; » dans E:webphp2.php en ligne 4
De nombreux phpers disent que l'utilisation de error_reporting(0) ne fonctionne pas. Dans le premier exemple, il y a une erreur fatale dans A.php, qui empêche l'exécution. Si le serveur ne peut pas être exécuté, il ne sait pas qu'il a cette fonction, donc la même erreur est signalée.
2. Désactivez certaines "mauvaises fonctionnalités"
1) Désactivez la fonction des citations magiques
Mettez magic_quotes_gpc = OFF dans php.ini
Évitez et
addslashesAttendez les échappements répétés
2) Désactivez register_globals = Off
Mettez register_globals = OFF dans php.ini
Dans le cas de register_globals = ON
<?php
//$bloger = $_GET['bloger']
//因为register_globals = ON 所以这步不用了直接可以用$bloger
echo $bloger;
?>
Copier après la connexion
Cette situation entraînera la modification facile de certaines variables non initialisées, ce qui peut être fatal. Alors tournez register_globals = OFF
(3) Strictement
configurez les autorisations des fichiers .
Attribuez des autorisations aux dossiers correspondants. Par exemple, les fichiers contenant des images téléchargées ne peuvent pas avoir d'autorisations d'exécution et ne peuvent être lus
3. Vérification stricte des données, ce que nous devons faire est de vérifier strictement. le flux de données de contrôle, même si l'un des 100 millions d'utilisateurs est un mauvais utilisateur, cela suffit à être fatal. De plus, les bons utilisateurs deviennent parfois « mauvais » par inadvertance lorsqu'ils saisissent accidentellement le chinois dans la zone de saisie des données.
Afin de garantir la sécurité et la robustesse du programme, la vérification des données doit inclure
(1) L'existence de données clés. Par exemple, si l'identifiant des données supprimées existe
(2) Si le
type de données est correct. Par exemple, si l'identifiant des données supprimées est un entier(3) Longueur des données. Si le champ est de type char(10), strlen est requis pour déterminer la longueur des données
(4) Si les données contiennent des caractères dangereux
Problèmes de longueur des données, tels que le champ de création de table de base de données char(25 ), la plupart des PHPers se demandent si s'il est vide, le type de données est correct, mais la longueur des caractères est ignorée, c'est plutôt comme être trop paresseux pour juger de la longueur.
Je pense que le front-end a été vérifié à l'aide de js, et le back-end n'a pas besoin d'être jugé et vérifié. C'est également fatal. Vous devez savoir que cela ne prend que quelques minutes pour forger un formulaire. Le but de js est uniquement de réduire le nombre de soumissions d'utilisateurs, améliorant ainsi l'expérience utilisateur, réduisant les requêtes http et réduisant la pression sur le serveur. Dans cette situation, cela ne peut pas empêcher les "méchants". Bien sûr, si l'utilisateur légitime est parfait sous le contrôle de vérification js, mais en tant que PHPer, nous ne pouvons pas seulement avoir la vérification js et abandonner une autre vérification de sécurité.
Manque de validation pour certains attributs du formulaire tels que la sélection, la case à cocher, la radio, le bouton, etc. Les développeurs ont défini leurs valeurs et plages de valeurs (valeurs de liste blanche) sur la page Web. La vérification dans JS ne vérifie généralement pas, car les utilisateurs légitimes n'ont que le droit de choisir et de ne pas modifier, et PHPer ne vérifiera pas les données lorsqu'il acceptera les données dans le backend pour traiter les données de vérification. réflexion, et des problèmes de sécurité surviennent. Le méchant est une fausse forme.
Le nom de l'élément correspondant du formulaire est cohérent avec le nom du champ de la table de données. Par exemple, le champ du nom d'utilisateur de la table utilisateur est user_name, puis la zone de saisie du nom d'utilisateur dans le formulaire. est également user_name. Ce n'est pas différent de la base de données.
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!