Dans le développement de PHP, garantir l'authenticité de l'identité des utilisateurs et le contrôle raisonnable des droits d'accès sont la clé pour créer des applications Web sécurisées. Cet article présentera plusieurs technologies d'authentification et d'autorisation courantes et les expliquera en combinaison avec des exemples de code pour vous aider à atteindre un environnement d'application plus sûr.
HTTP Basic Authentication demande le nom d'utilisateur et le mot de passe via une fenêtre contextuelle du navigateur. Il est simple et facile à utiliser, mais a une faible sécurité pendant la transmission et convient aux scénarios de besoins internes ou à faible sécurité.
// Endire HTTP Basic Authentication ('WWW-Authenticate: Basic Realm = "Protected Area"'); En-tête ('http / 1.0 401 non autorisé'); // Vérifiez les informations d'identification fournies if (isset ($ _ serveur ['php_auth_user']) && isset ($ _ serveur ['php_auth_pw'])) { $ username = $ _server ['php_auth_user']; $ mot de passe = $ _Server ['php_auth_pw']; // Trouvez l'utilisateur dans la base de données $ stmt = $ mysqli-> prépare ("SELECT * dans les utilisateurs où username =? Et mot de passe =?"); $ stmt-> bind_param ("ss", $ username, $ mot de passe); $ stmt-> execute (); $ result = $ stmt-> get_result (); $ stmt-> close (); if ($ result-> num_rows> 0) { // La vérification est réussie, l'accès est autorisé} else { // Échec de la vérification, montrant 401 Réponse non autorisée Echo "Accès non autorisé"; } }
La soumission du nom d'utilisateur et du mot de passe via les formulaires HTML est la méthode d'authentification la plus couramment utilisée dans les applications Web, et il combine la gestion de session pour réaliser la maintenance de l'état de la connexion de l'utilisateur.
// Traiter la soumission du formulaire de connexion if (isset ($ _ poster ['username']) && isset ($ _ post ['mot de passe'])) { $ username = $ _post ['username']; $ mot de passe = $ _post ['mot de passe']; // Trouvez l'utilisateur dans la base de données $ stmt = $ mysqli-> prépare ("SELECT * dans les utilisateurs où username =? Et mot de passe =?"); $ stmt-> bind_param ("ss", $ username, $ mot de passe); $ stmt-> execute (); $ result = $ stmt-> get_result (); $ stmt-> close (); if ($ result-> num_rows> 0) { // la vérification est réussie, créez une session d'authentification session_start (); $ _Session ['Authenticated'] = true; // Redirection vers l'en-tête de zone protégé ("Emplacement: protégé_area.php"); } autre { // Vérification a échoué, affichant le message d'erreur Echo "Nom d'utilisateur ou mot de passe non valide"; } }
Les autorisations d'accès administratives basées sur les rôles utilisateur sont courantes dans les applications de plusieurs utilisateurs, telles que la distinction d'autorisation entre les administrateurs et les utilisateurs ordinaires.
// Vérifiez si l'utilisateur a les autorisations requises pour accéder à une zone protégée spécifique if (isset ($ _ session ['user_role']) && $ _Session ['user_role'] == 'admin') { // Autoriser l'accès}
Contrôlez l'accès à des ressources spécifiques (telles que les fichiers, les enregistrements de base de données) pour garantir que les utilisateurs ne peuvent accéder aux ressources que dans leurs autorisations.
// Vérifiez les autorisations d'accès au fichier en fonction de l'ID utilisateur $ path = '/ uploads /'. $ _Get ['file_id']; if (file_exists ($ path) && is_file ($ path)) { $ fileowner = 'user_'. $ _Get ['user_id']; if (fileOwner ($ path) == $ fileOwner) { // permettre l'accès aux fichiers} }
Dans une application de babillard de message, les mécanismes d'authentification et d'autorisation ci-dessus peuvent être combinés:
En concevant rationnellement le processus d'authentification et d'autorisation, les développeurs PHP peuvent améliorer efficacement la sécurité des applications Web. L'exemple de code et d'idées fournis dans cet article fournissent une référence pratique pour la mise en œuvre du contrôle d'accès sécurisé, contribuant à créer un système d'application plus stable et fiable.