Basic Auth mit htaccess und htpasswd

Wenn man daten hinter einer Autentifizierung ausliefern möchte kann man das sehr schnell und einfach mit einem Eintrag in der .htaccess Datei und einer Passwort Datei (.htpasswd) umsetzen.

Die .htaccess Datei

Dazu erstellt man eine Datei mit dem Namen .htaccess (solltet ihr die Datei auf eurem Lokalen System erstellen, dann kann es sein das Ihr sie nach dem Erstellen nicht mehr in Eurem Dateimanager sehen könnt. Das liegt daran das Dateien die mit . beginnen für das System versteckte Dateien sind. Um die Dateien zu sehen muss Versteckte Dateien anzeigen im Dateimanager aktiviert sein). Solltet Ihr schon eine .htaccess Datei haben, dann kann die folgende Information einfach mit in die bestehende Datei geschrieben werden.

Welche Daten müssen in die .htaccess Datei?

AuthType: Hier wird der Type der Autorisierung angegeben. Das kann Basic sein oder Digest
AuthName: Hier kann ein Title eingegeben werden der in der LoginBox dargestellt wird.
AuthUserFile: Hier muss der vollständige Pfad zur .htpasswd Datei eingegeben werden.
Require: Bestimmt wer berechtigt ist. (Mehr unter Require)

Beispiel:

# Basic Passwortschutz. Erlaubt allen in htpasswd definierten Benutzern den Zugriff
AuthType Basic
AuthName "Geschützten Bereich betreten"
AuthUserFile /pfad//auf/dem/server/zur/htpasswd/datei/.htpasswd
Require valid-user

Die .htpasswd Datei

In der .htpasswd Datei definieren wir die Benutzer Zugangsdaten. Dazu erstellen wir eine Datei mit dem ANmen .htpasswd und speichern diese auf dem Server auf dem die Autentifizerung eingerichtet werden soll. Den Pfad zu dieser Datei müssen wir in der .htaccess Datei unter AuthUserFile verlinken. Dafür benötigen wir den Pfad auf dem Server, keine URL.

Wie ersstelle ich einen neuen Benutzer?

Der einfachste Weg einen neuen Benutzer zu erstellen ist einen online htpasswd Generator zu benutzen.
Beispiele für Online htpasswd Generatoren:

http://www.htpasswdgenerator.de/
http://www.htaccesstools.com/htpasswd-generator/
https://www.online-generator.net/htpasswd/

Dies sind nur Beispiele. Wenn man nach Htpasswd Generator sucht findet man einige.

Den Benutzer den wir mit dem Onlinegenerator erzeugt haben können wir einfach in unsere .htpasswd Datei einfügen.

Das Ergebnis

Wenn wir die Dateien erstellt haben und auf unseren Server in das zu schützende Verzeichnis gelegt haben, und wir die Url aufrufen, öffnet sich ein Fenster in das der Benutzername und das Passwort das wir in der .htpasswd eingefügt haben eingegeben werden muss. Wenn die Eingabe stimmt werden wir zu dem Inhalt des Ordners weiter geleitet. Stimmen die Daten nicht bekommen wir einen Autentifizierungs Fehler.

Mit htaccess permanet auf https umlenken

Mit htaccess ist es sehr einfach dafür zu sorgen das man die SSL Verschlüsselung, also die Nutzung von https erzwingt.
Dabei muss man nur prüfen ob die Seite mit dem https Protokoll aufgerufen wurde oder nicht, und wenn nicht dann wird die URL einfach umgeschrieben.

Hier der Code der in die .htaccess Datei eingegeben werden muss:


RewriteEngine On
# prüfen ob der standart Port 80 genutzt wird. Der standart Port für https / SSL ist 443
RewriteCond %{SERVER_PORT} 80
# sicherstellen das es sich um die gewünschte Domain handelt für die wir SSL erzingen möchten
RewriteCond %{HTTP_HOST} deine-url.de
# zusätzlich testen ob die domain mit www aufgerufen wurde
RewriteCond %{HTTP_HOST} www.deine-url.de
# Umschreiben der URL auf https
# $i enthält pfade und Parameter
# R=301 sagt dem AUfrufer das die seite permanent umgeleitet wird
# L bedeutet das keine weitere Regel mehr angewendet wird.
RewriteRule ^(.*)$ https://deine-url.de/$1 [R=301,L]

Wenn die Seite jetzt mit http://deine-url.de oder http://www.deine-url.de aufgerufen wird, wird automatisch auf https://deine-url.de umgeschaltet.

MySQL und UTF-8 ein paar hilfreiche Tips

Wenn man das Problem hat, das man alles auf UTF-8 Zeichen Kodierung gestellt hat, also der Webserver ist auf UTF-8 eingestellt, das Formular, die PHP Datei und alles was man so einstellen kann, aber in der Datenbank sind dann dennoch Kodierung-Fehler, dann hilft es oft wenn man zuerst einmal der Datenbank mitteilt, das alles was geladen werden soll im UTF-8 Format geladen werden soll. Continue reading