<?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; webdev</title>
	<atom:link href="http://blog.thomas-falkner.de/tag/webdev/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thomas-falkner.de</link>
	<description>Marginalien zu  Linux, Webdesign und Softwareentwicklung</description>
	<lastBuildDate>Mon, 12 Jul 2010 16:14:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>HTML-Eingaben in eigenen Joomla Komponenten gestatten</title>
		<link>http://blog.thomas-falkner.de/2010/07/12/joomla-html-komponenten/</link>
		<comments>http://blog.thomas-falkner.de/2010/07/12/joomla-html-komponenten/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 16:14:10 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Joomla]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/?p=268</guid>
		<description><![CDATA[Die Methode JRequest::get filtert per default HTML- und PHP-Code aus den Request. M&#246;chte man beispielsweise ein HTML-Eingabefeld in der eigenen Komponente nutzen, l&#228;sst sich dies &#252;ber die MethodeJRequest::getVar mit dem Parameter JREQUEST_ALLOWRAW erreichen.
Zum Beispiel so:
 $description = JRequest::getVar('description','','post','string', JREQUEST_ALLOWRAW);
]]></description>
			<content:encoded><![CDATA[<p>Die Methode <tt>JRequest::get</tt> filtert per default HTML- und PHP-Code aus den Request. M&#246;chte man beispielsweise ein HTML-Eingabefeld in der eigenen Komponente nutzen, l&#228;sst sich dies &#252;ber die <tt>MethodeJRequest::getVar</tt> mit dem Parameter <tt>JREQUEST_ALLOWRAW</tt> erreichen.</p>
<p>Zum Beispiel so:</p>
<p><code> $description = JRequest::getVar('description','','post','string', JREQUEST_ALLOWRAW);</code></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.thomas-falkner.de%2F2010%2F07%2F12%2Fjoomla-html-komponenten%2F&amp;linkname=HTML-Eingaben%20in%20eigenen%20Joomla%20Komponenten%20gestatten"><img src="http://blog.thomas-falkner.de/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2010/07/12/joomla-html-komponenten/feed/</wfw:commentRss>
		<slash:comments>0</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[Admin]]></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>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.thomas-falkner.de%2F2009%2F08%2F31%2Fmit-apache-hotlinking-und-bilderklau-unterbinden%2F&amp;linkname=Mit%20Apache%20Hotlinking%20und%20Bilderklau%20unterbinden"><img src="http://blog.thomas-falkner.de/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></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>
		<item>
		<title>Niedliches Mozilla Maskottchen</title>
		<link>http://blog.thomas-falkner.de/2007/03/23/niedliches-mozilla-maskottchen/</link>
		<comments>http://blog.thomas-falkner.de/2007/03/23/niedliches-mozilla-maskottchen/#comments</comments>
		<pubDate>Fri, 23 Mar 2007 12:28:42 +0000</pubDate>
		<dc:creator>Thomas Falkner</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://blog.thomas-falkner.de/2007/03/23/niedliches-mozilla-maskottchen/</guid>
		<description><![CDATA[
Es hei&#223;t Kit, ist ist so s&#252;&#223; und es soll f&#252;r die Einhaltung offener Webstandards sorgen: Das neue Maskottchen des Mozilla Developer Centers. Schon beinah widerlich, dieses manipulative Emotionalisieren. Nein, ich werde es mir weder auf den Desktop tapezieren, noch als Kuscheltier, Tasse oder Krawatte kaufen.
Trotzdem hoffe ich, dass die traurig blickenden Kulleraugen das Herz [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://developer.mozilla.org/devnews/' rel='attachment wp-att-102' title='Kit, das Maskottchen des Mozilla Developer Centers.'><img src='http://blog.thomas-falkner.de/wp-content/uploads/2007/03/firefoxlogo.jpg' alt='Kit, das Maskottchen des Mozilla Developer Centers.' /></a></p>
<p>Es hei&#223;t Kit, ist ist so s&#252;&#223; und es soll f&#252;r die Einhaltung offener Webstandards sorgen: Das neue <a href="http://developer.mozilla.org/devnews/index.php/2007/03/22/his-name-is-kit-developer-kit/">Maskottchen</a> des Mozilla Developer Centers. Schon beinah widerlich, dieses manipulative Emotionalisieren. Nein, ich werde es mir weder auf den <a href="http://developer.mozilla.org/en/docs/Promote_MDC">Desktop</a> tapezieren, noch als Kuscheltier, Tasse oder Krawatte kaufen.<br />
Trotzdem hoffe ich, dass die traurig blickenden Kulleraugen das Herz jener erweichen m&#246;gen, die glauben der Internet Explorer sei die Referenz. Blickt in diese Kulleraugen und fragt euch, ob es nett ist Webseiten zu gestalten, die auf propriet&#228;ren Technologien fu&#223;en und dem Benutzer vorschreiben einen bestimmten Browser zu installieren. </p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.thomas-falkner.de%2F2007%2F03%2F23%2Fniedliches-mozilla-maskottchen%2F&amp;linkname=Niedliches%20Mozilla%20Maskottchen"><img src="http://blog.thomas-falkner.de/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://blog.thomas-falkner.de/2007/03/23/niedliches-mozilla-maskottchen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
