.htaccess: Sicher ist besserArtikel

Wie man mit .htaccess Sicherheit schafft

Die Datei .htaccess lässt dynamisch Änderungen an den Einstellungen der php.ini zu. Einige sonst mögliche Änderungen via .htaccess können aber über die Config unterbunden worden sein. Dennoch sollten die hier vorgestellten Lösungen auf jedem Apache-Webserver laufen.

PHP-Code vor Zugriffen aus dem Web schützen
forbidden.gif

PHP ist zwar eine weborientierte Sprache, jedoch gibt es verschiedene Gründe, warum man PHP-Code möglichst vor direkten Zugriffen über den Webbrowser schützen sollte.

Zum einen kann es vorkommen, dass Fehler im Code diesen mitunter im Klartext dem Anwender im Browser anzeigt. Dieser kann dann aus dem gezeigten Code Rückschlüsse auf die Scriptarchitektur schließen und etwaige Sicherheitslöcher ausspähen oder gar eigenen Code einschleusen.

PHP-Code sollte daher möglichst aus vom HTML-Code getrennten Dateien nachgeladen werden. Wie stark man das auf die Spitze treibt bleibt jedem selbst überlassen, doch je größer eine Funktion, desto wichtiger deren Auslagerung in eine externe Datei.

Die Dateien sollten eine Erweiterung tragen, der man gesonderte Rechte zuordnen kann. Die Dateiendungen .inc oder .inc.php bieten sich hierbei an. Es sind aber nahezu beliebig andere möglich.

Um die Dateien nun vor direkten Webzugriffen zu schützen erstellt man im root-Verzeichnis des Projektes falls nicht schon vorhanden eine .htaccess-Datei und fügt folgenden Code hinein:

QUELLTEXT
<FilesMatch "\.(inc.php|htaccess)$">
  order allow,deny
  deny from all
  </FilesMatch>


Als Bonus sperrt dieser Code auch gleich noch die .htaccess-Datei selbst vor Webzugriffen, sofern dies nicht schon per Default so eingestellt ist.


PHP-Dateien verschleiern
Hierbei bieten sich 2 Möglichkeiten an, die auch in Kombination funktionieren:

Zunächst kann man per se alle Dateien mit der Endung .html durch den PHP-Parser schicken. Dies erreicht man über folgenden Code in der .htaccess-Datei:

QUELLTEXT
AddHandler application/x-httpd-php .html


Jedoch hat das auch den Nachteil, dass alle statischen .html-Dateien generell durch den Parser gejagt werden. Bei vielen statischen .html-Dateien kann das einen Performance-Verlust bedeuten, wird man aber ohnehin viel mit PHP in diesen Dateien hantieren, so ist dies die einfachste Lösung.

Zusätzlich bieten sich aber auch noch die von mir empfohlenen suchmaschinenfreundlichen Adressen an, die gleich mit der GET-Variablen Unordnung in der Adresszeile aufräumen.


Verzeichnisse komplett sperren
Zugangsdaten zur MySQL-Datenbank? Private Text-Notizen schnell per FTP geuppt? Es gibt viele Gründe, höchst restriktiv mit Zugriffsrechten umzugehen. Um ein ganzes Verzeichnis zu sperren einfach in diesem eine .htaccess-Datei erstellen mit folgendem Inhalt:

QUELLTEXT
.htaccess:
  Order allow,deny
  Allow from none



Es sollte unbedingt beachtet werden, dass per .htaccess definierte Einstellungen grundsätzlich auch für alle Unterverzeichnisse gelten. Zudem können fehlerhaft geschriebene .htaccess-Dateien die gesamte Webpräsenz lahm legen. Allein ein Rechtschreibfehler kann für einen "Internal Server Error" genügen, der jeglichen Output unterbindet.

Dennoch hat man mit .htaccess ein mächtiges Werkzeug in der Hand, mit dem man in wenigen Handgriffen seine Webpräsenz um einiges Sicherer gestalten kann.

Weitere Informationen
Domainunion bietet ein Tool, mit dem man auf seinem Webserver komfortabel beliebige Verzeichnisse mit .htaccess-Passwortschutz versehen kann.

Antwort hinzufügen

Dein Name:

editor-maximize editor-minimize mark manage-attachments clear-textarea process-stop

Smileys deaktivieren?

Spam Protection

Code Bit

Sie sind nicht eingeloggt.