<?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>Hinnerk Altenburg &#187; OpenSource | Hinnerk Altenburg, Hamburg</title>
	<atom:link href="http://www.hinnerk-altenburg.de/weblog/tags/opensource/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hinnerk-altenburg.de</link>
	<description>Web Developer in Hamburg, Germany</description>
	<lastBuildDate>Mon, 09 Jan 2012 07:49:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Perl: Handle malformed UTF-8 strings with Encode::encode</title>
		<link>http://www.hinnerk-altenburg.de/weblog/perl-handle-malformed-utf-8-strings-with-encode/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=perl-handle-malformed-utf-8-strings-with-encode</link>
		<comments>http://www.hinnerk-altenburg.de/weblog/perl-handle-malformed-utf-8-strings-with-encode/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 14:58:17 +0000</pubDate>
		<dc:creator>Hinnerk</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[gist]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[PerlIDS]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.hinnerk-altenburg.de/?p=268</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.hinnerk-altenburg.de/weblog/perl-handle-malformed-utf-8-strings-with-encode/' addthis:title='Perl: Handle malformed UTF-8 strings with Encode::encode ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>Having the error message &#8220;Malformed UTF-8 character (fatal)&#8221; in my log files, I tried to handle this properly without letting the process die nor throwing away the whole string. Having some research on Google I came up with following solution: See also: http://perldoc.perl.org/Encode.html#Handling-Malformed-Data http://www.perlmonks.org/?node_id=839519]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.hinnerk-altenburg.de/weblog/perl-handle-malformed-utf-8-strings-with-encode/' addthis:title='Perl: Handle malformed UTF-8 strings with Encode::encode ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div><p>Having the error message &#8220;Malformed UTF-8 character (fatal)&#8221; in my log files, I tried to handle this properly without letting the process die nor throwing away the whole string.<br />
Having some research on Google I came up with following solution:</p>
<div id="gist-1183704" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="k">sub </span><span class="nf">encode_utf_8</span> <span class="p">{</span></div><div class='line' id='LC2'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">my</span> <span class="nv">$string</span> <span class="o">=</span> <span class="nv">@_</span><span class="p">;</span></div><div class='line' id='LC3'><br/></div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">my</span> <span class="nv">$utf8_encoded</span> <span class="o">=</span> <span class="s">&#39;&#39;</span><span class="p">;</span></div><div class='line' id='LC5'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nb">eval</span> <span class="p">{</span></div><div class='line' id='LC6'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$utf8_encoded</span> <span class="o">=</span> <span class="nn">Encode::</span><span class="n">encode</span><span class="p">(</span><span class="s">&#39;UTF-8&#39;</span><span class="p">,</span> <span class="nv">$string</span><span class="p">,</span> <span class="nn">Encode::</span><span class="n">FB_CROAK</span><span class="p">);</span></div><div class='line' id='LC7'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">};</span></div><div class='line' id='LC8'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="vg">$@</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC9'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1"># sanitize malformed UTF-8</span></div><div class='line' id='LC10'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$utf8_encoded</span> <span class="o">=</span> <span class="s">&#39;&#39;</span><span class="p">;</span></div><div class='line' id='LC11'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">my</span> <span class="nv">@chars</span> <span class="o">=</span> <span class="nb">split</span><span class="p">(</span><span class="sr">//</span><span class="p">,</span> <span class="nv">$string</span><span class="p">);</span></div><div class='line' id='LC12'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">foreach</span> <span class="k">my</span> <span class="nv">$char</span> <span class="p">(</span><span class="nv">@chars</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC13'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">my</span> <span class="nv">$utf_8_char</span> <span class="o">=</span> <span class="nb">eval</span> <span class="p">{</span> <span class="nn">Encode::</span><span class="n">encode</span><span class="p">(</span><span class="s">&#39;UTF-8&#39;</span><span class="p">,</span> <span class="nv">$char</span><span class="p">,</span> <span class="nn">Encode::</span><span class="n">FB_CROAK</span><span class="p">)</span> <span class="p">}</span></div><div class='line' id='LC14'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="ow">or</span> <span class="k">next</span><span class="p">;</span></div><div class='line' id='LC15'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$utf8_encoded</span> <span class="o">.=</span> <span class="nv">$utf_8_char</span><span class="p">;</span></div><div class='line' id='LC16'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC17'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC18'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="nv">$utf8_encoded</span><span class="p">;</span></div><div class='line' id='LC19'><span class="p">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1183704/e2cb8e3b1b1bd72bc27713d2429c4f7118b4c9cc/encode_malformed_utf-8.pl" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1183704#file_encode_malformed_utf_8.pl" style="float:right;margin-right:10px;color:#666">encode_malformed_utf-8.pl</a>
            <a href="https://gist.github.com/1183704">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>See also:<br />
<a href="http://perldoc.perl.org/Encode.html#Handling-Malformed-Data" target="_blank">http://perldoc.perl.org/Encode.html#Handling-Malformed-Data</a><br />
<a href="http://www.perlmonks.org/?node_id=839519" target="_blank">http://www.perlmonks.org/?node_id=839519</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerk-altenburg.de/weblog/perl-handle-malformed-utf-8-strings-with-encode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Set a custom HTTP User-Agent in Perl with WWW::Mechanize</title>
		<link>http://www.hinnerk-altenburg.de/weblog/set-custom-http-user-agent-in-perl-with-www-mechanize/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=set-custom-http-user-agent-in-perl-with-www-mechanize</link>
		<comments>http://www.hinnerk-altenburg.de/weblog/set-custom-http-user-agent-in-perl-with-www-mechanize/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 19:21:42 +0000</pubDate>
		<dc:creator>Hinnerk</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[CPAN]]></category>
		<category><![CDATA[gist]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.hinnerk-altenburg.de/?p=214</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.hinnerk-altenburg.de/weblog/set-custom-http-user-agent-in-perl-with-www-mechanize/' addthis:title='Set a custom HTTP User-Agent in Perl with WWW::Mechanize ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>This is how you can dynamically set a custom HTTP User-Agent for your Perl requests to fake a device or browser for testing purpose or getting a device-specific version of a website. WWW::Mechanize supports setting a custom user-agent with the constructor and after this gives a choice of 6 pre-defined basic user-agents ( $mech->agent_alias() ), [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.hinnerk-altenburg.de/weblog/set-custom-http-user-agent-in-perl-with-www-mechanize/' addthis:title='Set a custom HTTP User-Agent in Perl with WWW::Mechanize ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div><p>This is how you can dynamically set a custom HTTP User-Agent for your Perl requests to fake a device or browser for testing purpose or getting a device-specific version of a website.<br />
<a href="http://search.cpan.org/~jesse/WWW-Mechanize-1.68/lib/WWW/Mechanize.pm">WWW::Mechanize</a> supports setting a custom user-agent with the constructor and after this gives a <a href="http://search.cpan.org/~jesse/WWW-Mechanize-1.68/lib/WWW/Mechanize.pm">choice of 6 pre-defined basic user-agents</a> ( $mech->agent_alias() ), only.</p>
<p>The following code demonstrates how to dynamically change the user-agent on a Mechanize object.</p>
<div id="gist-1056046" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="k">use</span> <span class="nn">WWW::</span><span class="n">Mechanize</span><span class="p">;</span></div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'><span class="k">my</span> <span class="nv">$initial_user_agent</span> <span class="o">=</span> <span class="s">&#39;Mozilla/5.0 (Linux; U; Android 2.2; de-de; HTC Desire HD 1.18.161.2 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1&#39;</span><span class="p">;</span></div><div class='line' id='LC4'><span class="k">my</span> <span class="nv">@user_agents</span> <span class="o">=</span> <span class="p">(</span></div><div class='line' id='LC5'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">&#39;Mozilla/5.0 (Windows; U; Windows NT 6.1; nl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13&#39;</span><span class="p">,</span></div><div class='line' id='LC6'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">&#39;Mozilla/5.0 (iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7D11&#39;</span><span class="p">,</span></div><div class='line' id='LC7'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">&#39;Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5&#39;</span><span class="p">,</span></div><div class='line' id='LC8'><span class="p">);</span></div><div class='line' id='LC9'><br/></div><div class='line' id='LC10'><span class="c1"># Set an initial custom header with the contructor</span></div><div class='line' id='LC11'><span class="k">my</span> <span class="nv">$mech</span> <span class="o">=</span> <span class="nn">WWW::</span><span class="n">Mechanize</span><span class="o">-&gt;</span><span class="k">new</span><span class="p">(</span> <span class="n">agent</span> <span class="o">=&gt;</span> <span class="nv">$initial_user_agent</span> <span class="p">);</span></div><div class='line' id='LC12'><br/></div><div class='line' id='LC13'><span class="c1"># get a page and print current URI (WWW::Mechanize follows redirections)</span></div><div class='line' id='LC14'><span class="nv">$mech</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span> <span class="s">&#39;http://www.facebook.com&#39;</span> <span class="p">);</span></div><div class='line' id='LC15'><span class="k">print</span> <span class="nb">sprintf</span><span class="p">(</span> <span class="s">&quot;User-Agent %s\n  redirects to: %s\n\n&quot;</span><span class="p">,</span> <span class="nv">$initial_user_agent</span><span class="p">,</span> <span class="nv">$mech</span><span class="o">-&gt;</span><span class="n">uri</span><span class="p">()</span> <span class="p">);</span></div><div class='line' id='LC16'><br/></div><div class='line' id='LC17'><span class="k">foreach</span> <span class="k">my</span> <span class="nv">$http_user_agent</span> <span class="p">(</span><span class="nv">@user_agents</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC18'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="c1"># dynamically set custom HTTP User-agents</span></div><div class='line' id='LC19'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$mech</span><span class="o">-&gt;</span><span class="n">add_header</span><span class="p">(</span> <span class="s">&#39;User-agent&#39;</span> <span class="o">=&gt;</span> <span class="nv">$http_user_agent</span><span class="p">);</span></div><div class='line' id='LC20'><br/></div><div class='line' id='LC21'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$mech</span><span class="o">-&gt;</span><span class="n">get</span><span class="p">(</span> <span class="s">&#39;http://www.facebook.com&#39;</span> <span class="p">);</span></div><div class='line' id='LC22'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">print</span> <span class="nb">sprintf</span><span class="p">(</span> <span class="s">&quot;User-Agent %s\n  redirects to: %s\n\n&quot;</span><span class="p">,</span> <span class="nv">$http_user_agent</span><span class="p">,</span> <span class="nv">$mech</span><span class="o">-&gt;</span><span class="n">uri</span><span class="p">()</span> <span class="p">);</span></div><div class='line' id='LC23'><span class="p">}</span></div><div class='line' id='LC24'><br/></div><div class='line' id='LC25'><span class="c1"># $ perl ./mechanize-user-agent.pl</span></div><div class='line' id='LC26'><span class="c1"># User-Agent Mozilla/5.0 (Linux; U; Android 2.2; de-de; HTC Desire HD 1.18.161.2 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1</span></div><div class='line' id='LC27'><span class="c1">#   redirects to: http://m.facebook.com/?w2m&amp;refsrc=http%3A%2F%2Fwww.facebook.com%2F&amp;_rdr</span></div><div class='line' id='LC28'><span class="c1"># </span></div><div class='line' id='LC29'><span class="c1"># User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.1; nl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13</span></div><div class='line' id='LC30'><span class="c1">#   redirects to: http://www.facebook.com</span></div><div class='line' id='LC31'><span class="c1"># </span></div><div class='line' id='LC32'><span class="c1"># User-Agent Mozilla/5.0 (iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7D11</span></div><div class='line' id='LC33'><span class="c1">#   redirects to: http://m.facebook.com/?w2m&amp;refsrc=http%3A%2F%2Fwww.facebook.com%2F&amp;_rdr</span></div><div class='line' id='LC34'><span class="c1"># </span></div><div class='line' id='LC35'><span class="c1"># User-Agent Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5</span></div><div class='line' id='LC36'><span class="c1">#   redirects to: http://m.facebook.com/?w2m&amp;refsrc=http%3A%2F%2Fwww.facebook.com%2F&amp;_rdr</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1056046/5ba140c4b9bfa911dbe515ae661f271c2be31ebb/mechanize-user-agent.pl" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1056046#file_mechanize_user_agent.pl" style="float:right;margin-right:10px;color:#666">mechanize-user-agent.pl</a>
            <a href="https://gist.github.com/1056046">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.hinnerk-altenburg.de/weblog/set-custom-http-user-agent-in-perl-with-www-mechanize/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Strip all HTML tags with Perl like PHP&#8217;s strip_tags() does</title>
		<link>http://www.hinnerk-altenburg.de/weblog/strip-all-html-tags-with-perl-regular-expression-regexp-like-php-strip_tags-does/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=strip-all-html-tags-with-perl-regular-expression-regexp-like-php-strip_tags-does</link>
		<comments>http://www.hinnerk-altenburg.de/weblog/strip-all-html-tags-with-perl-regular-expression-regexp-like-php-strip_tags-does/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 13:30:49 +0000</pubDate>
		<dc:creator>Hinnerk</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[PerlIDS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.hinnerk-altenburg.de/?p=130</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.hinnerk-altenburg.de/weblog/strip-all-html-tags-with-perl-regular-expression-regexp-like-php-strip_tags-does/' addthis:title='Strip all HTML tags with Perl like PHP&#8217;s strip_tags() does ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>The Perl regular expression (regexp/regex) equivalent to PHP&#8217;s strip_tags() is: while ($string =~ s/&#60;\S[^&#60;&#62;]*(?:&#62;&#124;$)//gs) {}; Please note that it also denotes an opening &#8220;&#60;&#8221; (followed by a non-whitespace character) as a tag and strips all characters behind, even it is not closed by a &#8220;&#62;&#8221;. This is the same behavior as PHP&#8217;s strip_tags(). Update: This [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.hinnerk-altenburg.de/weblog/strip-all-html-tags-with-perl-regular-expression-regexp-like-php-strip_tags-does/' addthis:title='Strip all HTML tags with Perl like PHP&#8217;s strip_tags() does ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div><p>The Perl regular expression (regexp/regex) equivalent to PHP&#8217;s strip_tags() is:</p>
<p>while ($string =~ s/&lt;\S[^&lt;&gt;]*(?:&gt;|$)//gs) {};</p>
<p>Please note that it also denotes an opening &#8220;&lt;&#8221; (followed by a non-whitespace character) as a tag and strips all characters behind, even it is not closed by a &#8220;&gt;&#8221;. This is the same behavior as PHP&#8217;s strip_tags().</p>
<p><em>Update:</em> This regexp is only satisfying my test against PHP 4.x, but 5.x is pretty smarter when it comes to edge cases. It will be a challenge to build a Perl equivalent as all the different approaches in CPAN also fail the test.</p>
<p><em>Update 2010-07-07:</em> I&#8217;m currently porting strip_tags() from the C source code of PHP 5.3.2 to a CPAN Module. Stay tuned.</p>
<p><em>Update 2011-05-25:</em> Today I finally uploaded my Perl port to CPAN: <a href="http://search.cpan.org/~hinnerk/HTML-StripTags-1.00/" target="_blank">http://search.cpan.org/~hinnerk/HTML-StripTags-1.00/</a><br />
New home of this module is <a href="http://www.hinnerk-altenburg.de/perl-strip_tags/" target="_blank">http://www.hinnerk-altenburg.de/perl-strip_tags/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerk-altenburg.de/weblog/strip-all-html-tags-with-perl-regular-expression-regexp-like-php-strip_tags-does/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>OpenSource Perl Website Intrusion Detection System PerlIDS (CGI::IDS) released</title>
		<link>http://www.hinnerk-altenburg.de/weblog/opensource-perl-website-intrusion-detection-system-perlids-cgiids-released/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=opensource-perl-website-intrusion-detection-system-perlids-cgiids-released</link>
		<comments>http://www.hinnerk-altenburg.de/weblog/opensource-perl-website-intrusion-detection-system-perlids-cgiids-released/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 12:36:51 +0000</pubDate>
		<dc:creator>Hinnerk</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[epublica]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[PerlIDS]]></category>
		<category><![CDATA[PHPIDS]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[XING]]></category>

		<guid isPermaLink="false">http://www.hinnerk-altenburg.de/?p=88</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.hinnerk-altenburg.de/weblog/opensource-perl-website-intrusion-detection-system-perlids-cgiids-released/' addthis:title='OpenSource Perl Website Intrusion Detection System PerlIDS (CGI::IDS) released ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>Today, we at epublica have officially released my work of the last months &#8211; a Perl port of PHPIDS, a tool for detection of Cross-Site-Scripting (XSS), Cross-Site-Request-Forgery (CSRF), SQL-Injections (SQLI), Local-File-Inclusions (LFI) etc. in website requests. The tool is released as CGI::IDS Perl module &#8220;PerlIDS&#8221; on CPAN.org under the OpenSource &#8220;Lesser GNU Public License&#8221; (LGPL). [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.hinnerk-altenburg.de/weblog/opensource-perl-website-intrusion-detection-system-perlids-cgiids-released/' addthis:title='OpenSource Perl Website Intrusion Detection System PerlIDS (CGI::IDS) released ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div><p>Today, we at <a href="http://www.epublica.de" target="_blank">epublica</a> have officially released my work of the last months &#8211; a <a title="PerlIDS - Perl Port of PHPIDS" href="http://php-ids.org/2008/11/06/release-of-perl-port-perlids/" target="_blank">Perl port of PHPIDS</a>, a tool for detection of Cross-Site-Scripting (XSS), Cross-Site-Request-Forgery (CSRF), SQL-Injections (SQLI), Local-File-Inclusions (LFI) etc. in website requests.<br />
The tool is released as <a title="IDS PerlIDS Perl Website Intrusion Detection System" href="http://search.cpan.org/%7Ehinnerk/CGI-IDS/lib/CGI/IDS.pm" target="_blank">CGI::IDS Perl module &#8220;PerlIDS&#8221;</a> on <a title="CPAN" href="http://www.cpan.org/" target="_blank">CPAN.org</a> under the OpenSource &#8220;Lesser GNU Public License&#8221; (LGPL).</p>
<p><span id="more-88"></span></p>
<p>The intrusion detection is based on a set of converters that convert the request according to common techniques that are used to hide attacks. These converted strings are checked for attacks by running a filter set of currently 68 regular expressions and a generic attack detector to find obfuscated attacks. For easily keeping the filter set up-to-date, PerlIDS is compatible to the original XML filter set of PHPIDS, which is frequently updated.<br />
Each matching regular expression has its own impact value that increases the tested string&#8217;s total attack impact.</p>
<p>Using these total impacts, a threshold can be defined by the calling application to log the suspicious requests to database and send out warnings via e-mail or even SMS on high impacts that indicate critical attack activity. These impacts can be summed per IP address, session or user to identify attackers who are testing the website with small impact attacks over a time.</p>
<p>During our development we have made some speed-improvements to PerlIDS and PHPIDS for the use on really large websites. With our experience of running it on websites with much user traffic, we could help to improve the converters and filter mechanism to reduce the rate of false alarms.</p>
<p>For heavily reducing the server load we introduced a whitelist mechanism to tell PerlIDS which request parameters don&#8217;t have to be checked with the expensive regular expressions if they match the whitelist rules.</p>
<p>We&#8217;d love to receive your feedback on the module!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerk-altenburg.de/weblog/opensource-perl-website-intrusion-detection-system-perlids-cgiids-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Two TYPO3 OpenSource extensions published</title>
		<link>http://www.hinnerk-altenburg.de/weblog/two-typo3-opensource-extensions-published/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=two-typo3-opensource-extensions-published</link>
		<comments>http://www.hinnerk-altenburg.de/weblog/two-typo3-opensource-extensions-published/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 23:20:30 +0000</pubDate>
		<dc:creator>Hinnerk</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Freelancer]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.hinnerk-altenburg.de/weblog/2-typo3-extensions-published/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.hinnerk-altenburg.de/weblog/two-typo3-opensource-extensions-published/' addthis:title='Two TYPO3 OpenSource extensions published ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>I am now the author of two TYPO3 extensions published in TER (TYPO3 Extension Repository). These extensions are frontend plugins that add functionality to the mm_forum extension. exinit_latesttopics displays the latest forum topics in a box, exinit_pollwidget displays an AJAX box for forum polls to make voting possible on any page.]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.hinnerk-altenburg.de/weblog/two-typo3-opensource-extensions-published/' addthis:title='Two TYPO3 OpenSource extensions published ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div><p>I am now the author of <a href="http://typo3.org/extensions/repository/?tx_terfe_pi1[view]=search&amp;no_cache=1&amp;tx_terfe_pi1[sword]=hinnerk" target="_blank">two TYPO3 extensions</a> published in TER (<a href="http://typo3.org/extensions/repository/" target="_blank">TYPO3 Extension Repository</a>). These extensions are frontend plugins that add functionality to the <a href="http://typo3.org/extensions/repository/view/mm_forum/0.1.6/" target="_blank">mm_forum</a> extension.</p>
<p><a href="http://typo3.org/extensions/repository/view/exinit_latesttopics/current/" target="_blank">exinit_latesttopics</a> displays the latest forum topics in a box, <a href="http://typo3.org/extensions/repository/view/exinit_pollwidget/current/" target="_blank">exinit_pollwidget</a> displays an AJAX box for forum polls to make voting possible on any page.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerk-altenburg.de/weblog/two-typo3-opensource-extensions-published/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Meet me at FOSS.in/2005 Open Source Conference in Bangalore</title>
		<link>http://www.hinnerk-altenburg.de/weblog/meet-me-at-fossin2005-open-source-conference-in-bangalore/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=meet-me-at-fossin2005-open-source-conference-in-bangalore</link>
		<comments>http://www.hinnerk-altenburg.de/weblog/meet-me-at-fossin2005-open-source-conference-in-bangalore/#comments</comments>
		<pubDate>Thu, 01 Dec 2005 08:56:37 +0000</pubDate>
		<dc:creator>Hinnerk</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Bangalore]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[India]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://weblog.hinnerk-voss.de/weblog/meet-me-at-fossin2005-open-source-conference-in-bangalore/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.hinnerk-altenburg.de/weblog/meet-me-at-fossin2005-open-source-conference-in-bangalore/' addthis:title='Meet me at FOSS.in/2005 Open Source Conference in Bangalore ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>The FOSS.in/2005 Free &#38; Open Source Software Conference is from November 29 to December 2 at Bangalore Palace. I am listening to several lectures. You&#8217;re welcome to join me if you are in Bangalore.]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style addthis_" addthis:url='http://www.hinnerk-altenburg.de/weblog/meet-me-at-fossin2005-open-source-conference-in-bangalore/' addthis:title='Meet me at FOSS.in/2005 Open Source Conference in Bangalore ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div><p>The <a href="http://www.foss.in/" target="_blank">FOSS.in/2005 Free &amp; Open Source Software Conference </a> is from November 29 to December 2 at Bangalore Palace. I am listening to several lectures.<br />
You&#8217;re welcome to join me if you are in Bangalore.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hinnerk-altenburg.de/weblog/meet-me-at-fossin2005-open-source-conference-in-bangalore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

