Apache: Zugriffsbeschränkung via htaccess

Gerade eben musste ich es mal wieder einrichten: Zugriffskontrolle auf ein Verzeichnis im Apache. Dazu hatte ich vor Jahren auf einer meiner Uralt-Webseiten schon mal einen Artikel geschrieben. Den re-publiziere ich hier in (praktisch) unüberarbeiteter Form:

Der htaccess-Mechanismus erlaubt eine verzeichnisorientierte Zugriffsbeschränkung über eine Authentifizierung. htaccess verlangt normalerweise einen gütigen Benutzername und Passwort, um auf dieses Verzeichnis (und seine Unterverzeichnisse) zugreifen zu dürfen.
Folgende Dinge sind zu tun, um ein Verzeichnis zu schützen:

1. in der httpd.conf:
htaccess muss für das Verzeichnis erlaubt werden. Dazu ist die Direktive AllowOveride All zu setzen. Beispiel:

<Directory /pfad/apache/htdocs/diesesverzeichnis>
    AllowOveride All
</Directory>

2. Anlegen der Datei .htaccess:
Im zu schützenden Verzeichnis wird die Datei angelegt (führenden Punkt nicht vergessen, dies ist eine versteckte Datei!):

AuthName "Dies ist der Login-Bereich von Fritzchen"
AuthType Basic
AuthUserFile /pfad/public/htdocs/login/.htpasswd
require valid-user

3. Anlegen der Datei .htpasswd:
Das Anlegen dieser Datei geschieht mit dem htpasswd-Befehl [update]bei Apache2 mit dem korrelierenden Befehl htpasswd2[/update]. Da die Passwörter verschlüsselt gespeichert werden, kann die Datei nicht von Hand erstellt werden.

Wir erzeugen die Datei z.B. mit folgendem Befehl:

$ htpasswd -c .htpasswd ersterbenutzer

Für jeden weiteren Benutzer rufen wir den Befehl ohne „create“ auf:

$ htpasswd .htpasswd weitererbenutzer
Share

Optimieren der Speicherbelegung mit visualgc

Hier nur schnell zwei Links zu einem Tool, das ich mir merken muss: visualgc, ein GUI-basiertes Programm zur Optimierung der Speicherbelegung von Java-Programmen.

Dank ans heise Team, für den schönen Artikel!

Share

IE6 No More! Kampagne

Genug ist genug! Über 8 Jahre alt ist der Internet Explorer Version 6 nun und muss leider immer noch in quasi allen Webprojekten berücksichtigt werden. Jeder Webentwickler weiß, welcher Aufwand dahinter steckt und wie sehr man sich mit dem Einsatz heutiger Technologien zurückhalten muss, nur damit alles auch bei dem alten Herrn noch hübsch aussieht.

Dagegen wurde nun von verschiedenen Unternehmen eine kleine Kampagne ins Leben gerufen, welche zum Ziel hat, den Anteil der IE6-Nutzer zu senken. Dazu stellen sie Webentwicklern einen kleinen Code-Schnipsel zur Verfügung, der bei Verwendung von IE6 oder älter einen Hinweis ausgibt.

ie6nomore

Insgesamt finde ich die Idee sehr gut und habe daher auch die deutsche Version des Codes beigesteuert (aktuell noch nicht auf deren Webseite veröffentlicht). Freilich soll das keinesfalls die Lösung aller Probleme sein, es wird nach wie vor in kommenden Projekten eine Berücksichtigung des Dinosauriers geben (müssen), aber in kleineren Auftritten oder auf privaten Webseiten kann man so einen Hinweis sicher mal guten Gewissens anbringen.

Hier noch die ins Deutsche übersetzte Variante:

<!--[if lt IE 7]>
<div style='border: 1px solid #F7941D; background: #FEEFDA; text-align: center; clear: both; height: 75px; position: relative;'>
  <div style='position: absolute; right: 3px; top: 3px; font-family: courier new; font-weight: bold;'><a href='#' onclick='javascript:this.parentNode.parentNode.style.display="none"; return false;'><img src='http://www.ie6nomore.com/files/theme/ie6nomore-cornerx.jpg' style='border: none;' alt='Diesen Hinweis schliessen'/></a></div>
  <div style='width: 640px; margin: 0 auto; text-align: left; padding: 0; overflow: hidden; color: black;'>
    <div style='width: 75px; float: left;'><img src='http://www.ie6nomore.com/files/theme/ie6nomore-warning.jpg' alt='Warnung!'/></div>
    <div style='width: 275px; float: left; font-family: Arial, sans-serif;'>
      <div style='font-size: 14px; font-weight: bold; margin-top: 12px;'>Sie verwenden einen veralteten Browser</div>
      <div style='font-size: 12px; margin-top: 6px; line-height: 12px;'>Um diese Seite optimal darzustellen, verwenden Sie bitte einen modernen Webbrowser.</div>
    </div>
    <div style='width: 75px; float: left;'><a href='http://www.firefox.com' target='_blank'><img src='http://www.ie6nomore.com/files/theme/ie6nomore-firefox.jpg' style='border: none;' alt='Lade Firefox 3.5 herunter'/></a></div>
    <div style='width: 75px; float: left;'><a href='http://www.browserforthebetter.com/download.html' target='_blank'><img src='http://www.ie6nomore.com/files/theme/ie6nomore-ie8.jpg' style='border: none;' alt='Lade Internet Explorer 8 herunter'/></a></div>
    <div style='width: 73px; float: left;'><a href='http://www.apple.com/safari/download/' target='_blank'><img src='http://www.ie6nomore.com/files/theme/ie6nomore-safari.jpg' style='border: none;' alt='Lade Safari 4 herunter'/></a></div>
    <div style='float: left;'><a href='http://www.google.com/chrome' target='_blank'><img src='http://www.ie6nomore.com/files/theme/ie6nomore-chrome.jpg' style='border: none;' alt='Lade Google Chrome herunter'/></a></div>
  </div>
</div>
<![endif]-->
Share

Suchen und Ersetzen in MySQL-Datenbanken

Immer wieder kommt es vor, dass man in einer Datenbank einen String in allen Einträgen durch einen anderen ersetzen will. Da ich mir für MySQL die SQL-Anweisung nie merken kann und jedes mal Google bemühen muss, halte ich es hier mal fest:

UPDATE tabellenname SET feldname =
    REPLACE(feldname, suchstring, neuerstring);

Beispiel: Eine Webseite wird umgezogen und das „dumme“ CMS hat alle Bildlinks in den Artikeln absolut als URL gespeichert:

UPDATE article SET articletext =
    REPLACE(articletext, 'www.altedomain.tld', 'www.neuedomain.tld');
Share