Mit Apache Hotlinking und Bilderklau unterbinden

Als Webmaster freut man sich über eingehende Links, denn schließlich steigt damit die Linkpopularität. Werden jedoch einzelne Inhalte wie beispielsweise Bilder in Foren direkt per Link eingebunden, können sich daraus erhebliche Probleme ergeben: Ist das Forum stark frequentiert und das eingebundene Foto relativ groß, kann der so generierte Traffic schnell bedrohliche Ausmaße annehmen.

Keine Chance für Trafficdiebe

Wäre es nicht elegant Trafficdieben das Handwerk zu legen, indem wir Ihnen statt dem verlinkten Bild eine andere Datei unterschieben? Statt des gewünschten Fotos könntest du den Contentdieb auf diese Weise unfreiwillig ein Werbebanner für deine eigene Website einbinden lassen.

stoppt_contentdiebe

Voraussetzung für die beschriebene Technik ist ein Apache Webserver mit dem Modul mod_rewrite. Der Code kann entweder über .htacess oder direkt über die Apache-Konfigurationsdatei eingebunden werden.
Ersetze einfach domain.tld gegen die Domain deiner Website und stoppt_contentdiebe.png gegen den Namen der Grafik, die du Contentdieben unterschieben möchtest.



RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.tld [NC]
RewriteCond %{REQUEST_FILENAME} !stoppt_contentdiebe.png$
RewriteRule .*\.(gif|jpg|png)$ http://domain.tld/images/stoppt_contentdiebe.png [R]

Erklärung zum Script

Zunächst prüfen wir anhand der Direktive filesmatch die Dateiendung gegen einen einfachen regulären Ausdrucks:

Damit erfassen wir alle aufgerufenen Dateien, die die Dateiendung .gif, .jpg oder .png tragen. Selbstverständlich ließe sich der Ausdruck um viele weitere Dateiendungen erweitern, deren direkte Verlinkung wir unterbinden möchten.

Im nächsten Schritt schalten wir die RewriteEngine an. Die RewriteEngine erlaubt es uns mittels RewriteCond verschiedene Parameter des HTTP-Request gegen reguläre Ausdrücke zu prüfen und bei Entsprechung die aufgerufene URL zu manipulieren.

Grundsätzlich müssen wir überprüfen, von welcher Domain aus das Bild verlinkt wurde. Dazu lesen wir den Parameter HTTP_REFERER aus. HTTP_REFERER gibt den Referrer, also die auf einen Link verweisende Domain an.

Getreu dem Motto “Was nicht erlaubt ist, ist verboten” können wir zwei Bedingungen für ein legitimes Verlinken der Fotos formulieren.

  1. Wenn kein Referrer angegeben ist. Das ist der Fall, wenn beispielsweise durch einen Proxy gelöscht oder die URL direkt aufgerufen wurde.
  2. Wenn der Referrer unserer eigenen Domain entspricht.

Wir können demnach folgende Bedienungen formulieren:

Der Referrer ist leer:

RewriteCond %{HTTP_REFERER} !^$

Der Referrer entspricht unserer eigenen Domain, wobei domain.tld gegen die Domain deiner Website zu ersetzen ist:

RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.tld [NC]

Damit die RewriteEngine sich nicht in einer endlosen Schleife verfängt, die letztlich mit einem Internal-Server-Error quittiert würde, müssen wir für das dem Trafficdieben unterzuschiebende Bild eine Ausnahme formulieren:

RewriteCond %{REQUEST_FILENAME} !stoppt_contentdiebe.png$

Sind alle Bedingungen erfüllt, greift folgende Regel, mit der wir alle fremdverlinkten Bilder gegen unseren Hinweis ersetzen.

RewriteRule .*\.(gif|jpg|png)$ http://domain.tld/stoppt_contentdiebe.png [R]

  • Share/Bookmark
No Comments Posted in Admin, apache
Tagged , , ,
Auszeichnung als Prüfungsbester der IHK Koblenz

Auch wenn der Weg ein ungewöhnlicher gewesen sein mag, habe ich im nach Abschluss meines Informatikstudiums Sommer 2007 eine Ausbildung zum Industriekaufmann aufgenommen. Ziel war es mich auch im Bereich der Betriebswirtschaftslehre weiter zu qualifizieren, ohne ein langwieriges und kostenintensives Zweitstudium aufzunehmen. Auf zwei Jahre verkürzte habe ich die Ausbildung als einer der Prüfungsbesten des Kammerbezirks abgeschlossen. Eine Leistung, die mich durchaus mit Stolz erfüllt.

Einladung der IHK

Resümierend muss ich jedoch gestehen, dass ich von der Ausbildung mehr erwartet hätte. Das im Rahmen der schulischen Ausbildung vermittelte Wissen war überwiegend oberflächlich und fernab der Praxis. Nun stehe ich vor der Wahl doch noch ein BWL-Fernstudium zu beginnen und die Lücken der Ausbildung autodidaktisch zu füllen.

  • Share/Bookmark
No Comments Posted in Ausbildung, Studium
Tagged , ,
Vim: Datei trotz fehlender Schreibrechte speichern

Ich bekenne mich als vim-Fan. Abgesehen von Textmate habe ich noch keinen Editor gefunden, mit dem ich ähnlich produktiv arbeiten könnte. Unter vim wurde bisweilen meine Produktivität gelegentlich ein wenig gebremst: Schnell eine Änderung in einer Server-Konfigurationsdatei vorgenommen, :win die Tastatur gehackt und vim quittiert es mit E212: Can't open file for writing. Mal wieder die vergessen vim mit sudo zu starten. Zwar lässt sich die Datei problemlos unter einem temporären Dateinamen speichern und dann mit sudo mv verschieben, doch das kostet unnötig Zeit.

Viel eleganter und schneller lässt sich die Datei trotz mangelnder Zugriffsrechte direkt aus vim heraus abspeichern:
:w !sudo tee %

Ein kleine Befehlsfolge, die mir künftig viel Zeit sparen wird. :-)

  • Share/Bookmark
No Comments Posted in Admin, Linux
Tagged , , ,
Neue Twitter-Startseite: Fokus auf Suchfunktion

Twitter wird allmählich erwachsen und bemüht sich um Businesskunden. Die Veröffentlichung eines Leitfadens zur Nutzung von Twitter als Marketinginstrument gab erste Hinweise auf das Potenzial der über Twitter möglichen Echtzeitsuche nach Diskursen, Gedanken, Gefühlen, Eindrücken, Stimmungen, Meinungen und Gerüchten: Also der ungefilterten Essenz dessen, was Menschen weltweit bewegt; verdichtet und kategorisiert durch Hashtags.

Diesem Gedanken folgend hat Twitter heute wie angekündigt die Startseite überarbeitet und rückt die Suchfunktion in den Mittelpunkt. Damit richtet sich Twitter insbesondere an potentielle Twitteruser, indem es ihnen ein Werkzeug zur Hand reicht um zu ergründen, was die Twittersphäre aktuell beschäftigt. Unterhalb der Suchfunktion werden die populärsten Themen der letzten Minuten, Tage und Woche auf Schlagworte, sogenannte Hashtags, verdichtet angezeigt.

Neue Startseite von Twitter

Bisherige Twitter Homepage

Die Fokussierung auf die Suchfunktion hilft auch Menschen, die noch nicht twittern, relevante Informationen aus dem großen Rauschen der Tweets zu extrahieren. Wenngleich ich mich als Gewohnheitsmensch erst an die neue Twitter-Startseite gewöhnen muss, so scheint sie mir dennoch äußert gelungen zu sein. Denn die neue Startseite kommuniziert Sinn und Funktion von Twitter sehr erfolgreich – auch an unbedarfte Nutzer.

  • Share/Bookmark
No Comments Posted in Twitter
Tagged , ,
load average: 5.49, 4.99, 3.83

Ich befürchte, das schreit nach einem neuen Datenbankserver. Ich habe noch nie einen so hohen Load gesehen:

16:18:35 up 276 days, 2:47, 2 users, load average: 5.49, 4.99, 3.83

  • Share/Bookmark
No Comments Posted in Admin, Linux
Tagged
Die Antwort ist 42

Und wieder einmal lautet die Antwort 42!

  • Share/Bookmark
No Comments Posted in Fun, geek
Tagged ,
Langsamer DVD-Brenner unter Windows XP

Wird ein Brennvorgang gewaltsam abgebrochen, kann es passieren, dass der DVD/CD-Brenner unter Windows XP fortan nur noch im Schneckentempo CDs und DVDs brennen möchte und zudem eine enorm hohe CPU-Last erzeugt wird. Diese Symptome weisen darauf hin, dass Windows das Laufwerk nur noch im äußerst langsamen und zugleich ressourcenhungrigen PIO-Modus betreibt.
Abhilfe schafft hier meiner Erfahrung nach nur noch den Rechner in den abgesicherten Modus zu starten und das betroffene Laufwerk nebst Controller im Gerätemanager zu entfernen. Nach einem Neustart wird die Hardware wieder automatisch erkannt und Windows XP spricht das Laufwerk im ungleich schnelleren UDMA-Modus an.

[ad]

  • Share/Bookmark
1 Comment Posted in Admin, Windows
Tagged , ,
Apfelernte

Mein Kollege David hatte mich gestern zur Apfelernte eingeladen. In Apfelbäumen herum zu kraxeln, sie zu schütteln und anschließend die Äpfel einzusammeln, war eine willkommene, wenn auch recht mühsame Abwechslung zum alltäglichen Geschäft der Softwareentwicklung. Nach gut drei Stunden und zwei abgeernteten Bäumen war das Auto randvoll mit in Jutesäcken verpackten Äpfeln gefüllt.

Die Ladung habe ich heute in die Kelterei Güldenkron gefahren, wo die Äpfel gewogen wurden: Stolze 334,71 kg, die mir die Kelterei mit immerhin 5 Kisten frisch gepressten Apfelsaft entlohnte.

Hat Spaß gemacht!

  • Share/Bookmark
1 Comment Posted in Alltag
Tagged ,
Produktschlüssel per T-SQL auslesen

Mit der T-SQL Funktion xp_regread lassen sich beliebige Parameter aus der Registry auslesen. So beispielsweise auch der CD-Key des Microsoft SQL-Servers:

USE master
EXEC xp_regread 'HKEY_LOCAL_MACHINE',
'SOFTWARE\Microsoft\Microsoft SQL Server\80\registration',
'CD_KEY'

  • Share/Bookmark
No Comments Posted in Admin
Tagged , , , , ,
Linux: Mehrere IP-Adressen an ein Netzwerkinterface binden

Manchmal ist es erforderlich mehrere IP-Adressen an ein Netzwerkinterface zu binden. Nur so lassen sich beispielsweise auf einem angemieteten Rootserver mit nur einer Netzwerkkarte Websites unter verschiedenen IP-Adressen hosten – Voraussetzung dabei ist selbstverständlich, dass der Hoster zusätzliche IP-Adressen zur Verfügung stellt.

Linux bietet mit dem Konzept der virtuellen Netzwerkinterfaces eine elegante Lösung, um an einen Netzwerkadapter viele IP-Adressen zu binden. Jede physikalisch Netzwerkkarte trägt einen eindeutigen Namen, etwa eth0 für die erste Karte oder eth1 für die zweite Netzwerkkarte. Für jede physikalische Netzwerkarte lassen sich mehrere virtuelle Interfaces mit einer eigenen IP-Adresse konfigurieren. Dazu ist das physikalische Interface (eth0, eth1, eth2 usw.) gefolgt von einem Doppelpunkt und der Nummer des zu erstellenden virtuellen Interface anzugeben. So bezeichnet eth0:1 das erste virtuelle Interface an der physikalischen Netzwerkkarte eth0 und eth1:5 das fünfte virtuelle Interface an der zweiten Netzwerkkarte eth1.

Die virtuellen Netzwerkschnittstellen lassen sich mit den gleichen Werkzeugen konfigurieren, wie ihre physikalischen Pendants.

Um beispielsweise manuell die IP-Adresse 192.168.35.100 an die Netzwerkkarte eth0 zu binden, genügt es folgenden Befehl mit root-Rechten auszuführen.

ifconfig eth0:1 192.168.35.200 netmask 255.255.255.0 broadcast 192.168.35.255 up

Möchte man die manuell vorgenommene Konfiguration dauerhaft hinterlegen, wäre unter Debian die /etc/network/interfaces wie folgt zu editieren:

auto eth0:1
iface eth0:1 inet static
address 192.168.35.200
netmask 255.255.255.0
broadcast 192.163.35.255

  • Share/Bookmark
4 Comments Posted in Admin, Linux
Tagged , , , , , ,