<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Thomas Falkner &#187; Apache</title>
	<atom:link href="http://blog.thomas-falkner.de/category/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thomas-falkner.de</link>
	<description>Marginalien zu  Linux, Webdesign und Softwareentwicklung</description>
	<lastBuildDate>Sun, 24 Apr 2011 12:11:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>PHP-Fehlermeldungen mit .htaccess steuern</title>
		<link>http://blog.thomas-falkner.de/2011/04/11/php-fehlermeldungen-mit-htaccess-steuern/</link>
		<comments>http://blog.thomas-falkner.de/2011/04/11/php-fehlermeldungen-mit-htaccess-steuern/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 10:13:15 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[.htacess]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sicherheit]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=329</guid>
		<description><![CDATA[Grunds&#228;tzlich kann es zu einem Sicherheitsrisiko werden PHP-Fehlermeldungen auf der Website anzeigen zu lassen, da mit R&#252;ckschl&#252;ssen auf den Code, die Verzeichnisstruktur oder Datenbankstruktur der Fehler ausgenutzt werden k&#246;nnte. Mit folgenden Eintr&#228;gen in der .htaccess lassen sich die PHP-Fehlermeldungen unterdr&#252;cken. php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off php_value docref_root 0 php_value docref_ext 0 [...]]]></description>
			<content:encoded><![CDATA[<p>Grunds&#228;tzlich kann es zu einem Sicherheitsrisiko werden PHP-Fehlermeldungen auf der Website anzeigen zu lassen, da mit R&#252;ckschl&#252;ssen auf den Code, die Verzeichnisstruktur oder Datenbankstruktur der Fehler ausgenutzt werden k&#246;nnte.<br />
Mit folgenden Eintr&#228;gen in der <tt>.htaccess</tt> lassen sich die PHP-Fehlermeldungen unterdr&#252;cken. </p>
<pre name="code" class="php">
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
</pre>
<p>Sinnvoll ist es hingegen die Fehler in eine Logdatei zu schreiben:</p>
<pre name="code" class="php">
php_flag  log_errors on
php_value error_log  /path/to/website/PHP_errors.log
</pre>
<p>Sinnvoll ist es zudem den Zugriff &#252;ber den Browser auf die Logdatei zu verbieten:</p>
<pre name="code" class="php">
<files PHP_errors.log>
 Order allow,deny
 Deny from all
 Satisfy All
</files>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2011/04/11/php-fehlermeldungen-mit-htaccess-steuern/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mit Apache Hotlinking und Bilderklau unterbinden</title>
		<link>http://blog.thomas-falkner.de/2009/08/31/mit-apache-hotlinking-und-bilderklau-unterbinden/</link>
		<comments>http://blog.thomas-falkner.de/2009/08/31/mit-apache-hotlinking-und-bilderklau-unterbinden/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 09:14:42 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=248</guid>
		<description><![CDATA[Als Webmaster freut man sich &#252;ber eingehende Links, denn schlie&#223;lich steigt damit die Linkpopularit&#228;t. Werden jedoch einzelne Inhalte wie beispielsweise Bilder in Foren direkt per Link eingebunden, k&#246;nnen sich daraus erhebliche Probleme ergeben: Ist das Forum stark frequentiert und das eingebundene Foto relativ gro&#223;, kann der so generierte Traffic schnell bedrohliche Ausma&#223;e annehmen. Keine Chance [...]]]></description>
			<content:encoded><![CDATA[<p>Als Webmaster freut man sich &#252;ber eingehende Links, denn schlie&#223;lich steigt damit die Linkpopularit&#228;t. Werden jedoch einzelne Inhalte wie beispielsweise Bilder in Foren direkt per Link eingebunden, k&#246;nnen sich daraus erhebliche Probleme ergeben: Ist das Forum stark frequentiert und das eingebundene Foto relativ gro&#223;, kann der so generierte Traffic schnell bedrohliche Ausma&#223;e annehmen. </p>
<h2>Keine Chance f&#252;r Trafficdiebe</h2>
<p>W&#228;re es nicht elegant Trafficdieben das Handwerk zu legen, indem wir Ihnen statt dem verlinkten Bild eine andere Datei unterschieben? Statt des gew&#252;nschten Fotos k&#246;nntest du den Contentdieb auf diese Weise unfreiwillig ein Werbebanner f&#252;r deine eigene Website einbinden lassen.</p>
<p><img src="http://blog.thomas-falkner.de/wp-content/uploads/2009/08/stoppt_contentdiebe.png" alt="stoppt_contentdiebe" title="stoppt_contentdiebe" width="450" height="50" class="alignnone size-full wp-image-255" /></p>
<p>Voraussetzung f&#252;r die beschriebene Technik ist ein Apache Webserver mit dem Modul mod_rewrite. Der Code kann entweder &#252;ber .htacess oder direkt &#252;ber die Apache-Konfigurationsdatei eingebunden werden.<br />
Ersetze einfach <tt>domain.tld</tt> gegen die Domain deiner Website und <tt>stoppt_contentdiebe.png</tt> gegen den Namen der Grafik, die du Contentdieben unterschieben m&#246;chtest. </p>
<p><code><br />
<filesmatch "\.(gif|jpg|png)$"><br />
      RewriteEngine on<br />
      RewriteCond %{HTTP_REFERER} !^$<br />
      RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.tld [NC]<br />
      RewriteCond %{REQUEST_FILENAME} !stoppt_contentdiebe.png$<br />
      RewriteRule .*\.(gif|jpg|png)$ http://domain.tld/images/stoppt_contentdiebe.png [R]<br />
</filesmatch><br />
</code></p>
<h2>Erkl&#228;rung zum Script</h2>
<p>Zun&#228;chst pr&#252;fen wir anhand der Direktive filesmatch die Dateiendung gegen einen einfachen regul&#228;ren Ausdrucks:</p>
<p><code><filesmatch "\.(gif|jpg|png)$"></filesmatch></code></p>
<p>Damit erfassen wir alle aufgerufenen Dateien, die die Dateiendung .gif, .jpg  oder .png tragen. Selbstverst&#228;ndlich lie&#223;e sich der Ausdruck um viele weitere Dateiendungen erweitern, deren direkte Verlinkung wir unterbinden m&#246;chten.</p>
<p>Im n&#228;chsten Schritt schalten wir die RewriteEngine an. Die RewriteEngine erlaubt es uns mittels <tt>RewriteCond</tt> verschiedene Parameter des HTTP-Request gegen regul&#228;re Ausdr&#252;cke zu pr&#252;fen und bei Entsprechung die aufgerufene URL zu manipulieren.</p>
<p>Grunds&#228;tzlich m&#252;ssen wir &#252;berpr&#252;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. </p>
<p>Getreu dem Motto &#8220;Was nicht erlaubt ist, ist verboten&#8221; k&#246;nnen wir zwei Bedingungen f&#252;r ein legitimes Verlinken der Fotos formulieren.</p>
<ol>
<li>Wenn kein Referrer angegeben ist. Das ist der Fall, wenn beispielsweise durch einen Proxy gel&#246;scht oder die URL direkt aufgerufen wurde.</li>
<li>Wenn der Referrer unserer eigenen Domain entspricht.</li>
</ol>
<p>Wir k&#246;nnen demnach folgende Bedienungen formulieren:</p>
<p>Der Referrer ist leer:<br />
<code><br />
      RewriteCond %{HTTP_REFERER} !^$<br />
</code></p>
<p>Der Referrer entspricht unserer eigenen Domain, wobei domain.tld gegen die Domain deiner Website zu ersetzen ist:<br />
<code><br />
       RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.tld [NC]<br />
</code></p>
<p>Damit die RewriteEngine sich nicht in einer endlosen Schleife verf&#228;ngt, die letztlich mit einem Internal-Server-Error quittiert w&#252;rde, m&#252;ssen wir f&#252;r das dem Trafficdieben unterzuschiebende Bild eine Ausnahme formulieren:</p>
<p><code>RewriteCond %{REQUEST_FILENAME} !stoppt_contentdiebe.png$</code></p>
<p>Sind alle Bedingungen erf&#252;llt, greift folgende Regel, mit der wir alle fremdverlinkten Bilder gegen unseren Hinweis ersetzen. </p>
<p><code>RewriteRule .*\.(gif|jpg|png)$ http://domain.tld/stoppt_contentdiebe.png [R]</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2009/08/31/mit-apache-hotlinking-und-bilderklau-unterbinden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

