In der PHP -Entwicklung sind die Authentizität der Benutzeridentität und die angemessene Kontrolle der Zugriffsrechte der Schlüssel zum Aufbau sicherer Webanwendungen. In diesem Artikel werden mehrere gemeinsame Authentifizierungs- und Autorisierungstechnologien eingeführt und sie in Kombination mit Code -Beispielen erläutert, mit denen Sie eine sicherere Anwendungsumgebung erreichen können.
HTTP Basic Authentication fordert Benutzername und Kennwort über ein Browser-Popup-Fenster an. Es ist einfach und einfach zu bedienen, verfügt jedoch über eine geringe Sicherheit während der Übertragung und ist für interne oder niedrige Sicherheitsbedarfszenarien geeignet.
// HTTP Basic Authentication Header senden ('www-authenticate: Basic Realm = "Protected Area"'); Header ('http/1.0 401 nicht autorisiert'); // Überprüfen Sie die angegebenen Anmeldeinformationen if (isset ($ _ server ['php_auth_user']) && isset ($ _ server ['php_auth_pw']))) { $ userername = $ _server ['php_auth_user']; $ password = $ _server ['php_auth_pw']; // den Benutzer in der Datenbank finden $ STMT = $ mysqli-> vorbereiten ("Select * von Benutzern, wo userername =? Und password =?"); $ stmt-> bind_param ("ss", $ userername, $ password); $ stmt-> execute (); $ result = $ stmt-> get_result (); $ stmt-> close (); if ($ result-> num_rows> 0) { // Überprüfung ist erfolgreich, der Zugriff ist zulässig} else { // Überprüfung fehlgeschlagen und zeigte 401 nicht autorisierte Antwort echo "unbefugter Zugriff"; } }
Das Senden von Benutzername und Kennwort über HTML -Formulare ist die am häufigsten verwendete Authentifizierungsmethode in Webanwendungen und kombiniert die Sitzungsverwaltung, um die Wartung des Benutzeranmeldes zu erreichen.
// Anmeldeformulareinreichung verarbeiten if (isset ($ _ post ['Benutzername']) && isset ($ _ post ['password'])) { $ userername = $ _post ['userername']; $ password = $ _post ['Passwort']; // den Benutzer in der Datenbank finden $ STMT = $ mysqli-> vorbereiten ("Select * von Benutzern, wo userername =? Und password =?"); $ stmt-> bind_param ("ss", $ userername, $ password); $ stmt-> execute (); $ result = $ stmt-> get_result (); $ stmt-> close (); if ($ result-> num_rows> 0) { // Überprüfung ist erfolgreich, erstellen Sie eine Authentifizierungssitzung Session_start (). $ _Session ['authentifiziert'] = true; // Umleiten in geschützter Bereiche ("Ort: protected_area.php"); } anders { // Überprüfung fehlgeschlagen, wobei die Fehlermeldung "Ungültiger Benutzername oder Passwort" angezeigt wird. } }
Verwaltungszugriffsberechtigungen basierend auf Benutzerrollen sind in Anwendungen mehrerer Benutzer häufig, z. B. die Berechtigungsunterscheidung zwischen Administratoren und normalen Benutzern.
// Überprüfen Sie, ob der Benutzer über die Berechtigungen verfügt, die für den Zugriff auf einen bestimmten Schutzbereich erforderlich sind, wenn (ISSET ($ _ Session ['user_role']) && $ _Session ['user_role'] == 'admin') { // Zugriff zulassen}
Steuern Sie den Zugriff auf bestimmte Ressourcen (z. B. Dateien, Datenbankdatensätze), um sicherzustellen, dass Benutzer nur in ihren Berechtigungen auf Ressourcen zugreifen können.
// Überprüfung der Dateizugriffsberechtigungen basierend auf der Benutzer -ID $ path = '/uploads/'. $ _Get ['file_id']; if (Datei_exists ($ path) && is_file ($ path)) { $ fileowner = 'user_'. $ _Get ['user_id']; if (FileOwner ($ path) == $ fileunner) { // Zugriff auf Dateien zulassen} }
In einer Message Board -Anwendung können die oben genannten Authentifizierungs- und Autorisierungsmechanismen kombiniert werden:
Durch rationales Entwerfen des Authentifizierungs- und Autorisierungsprozesses können PHP -Entwickler die Sicherheit von Webanwendungen effektiv verbessern. Der in diesem Artikel bereitgestellte Beispielcode und Ideen bieten praktische Referenz für die Implementierung einer sicheren Zugriffskontrolle und beitragen, ein stabileres und zuverlässigeres Anwendungssystem zu erstellen.