<?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>Jonathan Weiß &#187; Web applications</title>
	<atom:link href="http://mysterycity.de/blog/category/web-applications/feed" rel="self" type="application/rss+xml" />
	<link>http://mysterycity.de/blog</link>
	<description>Online Marketing</description>
	<lastBuildDate>Tue, 01 Nov 2011 09:28:26 +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>Security auditing dissertation</title>
		<link>http://mysterycity.de/blog/security-auditing</link>
		<comments>http://mysterycity.de/blog/security-auditing#comments</comments>
		<pubDate>Thu, 17 Jul 2008 06:14:03 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Web applications]]></category>

		<guid isPermaLink="false">http://mysterycity.de/blog/?p=115</guid>
		<description><![CDATA[I have always been interested in web security since web applications offer a big attack surface and I am personally fascinated by the creativity and passion the attackers show. Therefore you will read much more about security on this blog in the near future. ;-) Yesterday I visited a dissertation arranged by the Java User [...]]]></description>
			<content:encoded><![CDATA[<p>I have always been interested in web security since web applications offer a big attack surface and I am personally fascinated by the creativity and passion the attackers show.<br />
Therefore you will read much more about security on this blog in the near future. ;-)</p>
<p>Yesterday I visited a dissertation arranged by the <a href="https://jug-ka.dev.java.net/">Java User Group Karlsruhe</a> in the building of the <a href="http://www.ira.uka.de/">University of Karlsruhe</a>. Software Architect Patrick Schemitz from <a href="http://www.netpioneer.de">Netpioneer GmbH</a> talked about Web Application Security Auditing.</p>
<p>Here are my notes:</p>
<ul>
<li>In case of non-targeted attacks, your server or application does not have to be absolute secure, just more secure than others. ;-)
</li>
<li>The German Federal Ministry has defined an interesting <a href="www.bsi.bund.de/literat/studien/websec/WebSec.pdf">security layer model</a> (PDF, german).</li>
<li>Parallel to this layer is the layer of responsibility: from IT services over software developers to the end user.</li>
<li>
		Techniques</p>
<ol>
<li>
				Server</p>
<ul>
<li>SQL injection</li>
<li>Code injection (buffer overflow)</li>
<li>SMTP injection</li>
</ul>
</li>
<li>
				Client</p>
<ul>
<li>Cross side scripting</li>
<li>Session hijacking</li>
<li>Session riding</li>
</ul>
</li>
</ol>
</li>
<li>
		Demos</p>
<ol>
<li>
				Server</p>
<ul>
<li>PHP: <code>register_globals</code>, <code>eval()</code></li>
<li>Perl: <code>system()</code></li>
<li>SQL: two queries are build on one, skipping code by using a SQL comment</li>
</ul>
</li>
<li>
				Client</p>
<ul>
<li>Reflected XSS: Manipulate input through URL to poison HTML sent from server</li>
<li>Persistent XSS: Manipulate input which is stored on server and can be delivered every time</li>
<li>Session hijacking if session data is stored in URL</li>
</ul>
</li>
</ol>
</li>
<li>
		Counteractions</p>
<ol>
<li>Do not trust the user input.</li>
<li>Filter input in different ways for database and frontend.</li>
<li>Avoid <code>eval()</code> and <code>system()</code>.</li>
<li>Search for dangerous files (backups with different file extension, test files etc.) in the webserver's document root.</li>
<li>Security analytic tools do not find many holes.</li>
</ol>
</li>
</ul>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://mysterycity.de/blog/security-auditing/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Improving the loading speed of web applications</title>
		<link>http://mysterycity.de/blog/improving-the-loading-speed-of-web-applications</link>
		<comments>http://mysterycity.de/blog/improving-the-loading-speed-of-web-applications#comments</comments>
		<pubDate>Sun, 30 Sep 2007 19:11:00 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Web applications]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://mysterycity.de/blog/improving-the-loading-speed-of-web-applications</guid>
		<description><![CDATA[The first impression of a web application is the time it takes to load. There are a few steps to make this first impression the best impression, so let's get started. Step 1: Preloading data For nearly every application you need to login with your username and password. While the user tries to remember his [...]]]></description>
			<content:encoded><![CDATA[<p>The first impression of a web application is the time it takes to load. There are a few steps to make this first impression the best impression, so let's get started.</p>
<h3>Step 1: Preloading data</h3>
<p>For nearly every application you need to login with your username and password. While the user tries to remember his password, we get a few extra seconds to load data. Be sure to do this unobtrusively, because some users wait until the loading bar disappears before they start working with a web application.</p>
<h3>Step 2: Reduce requests</h3>
<p>One of the biggest bottlenecks in modern browsers is the amount of active HTTP connections at the same time:</p>
<p>&raquo;<i>A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy.</i>&laquo; <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a></p>
<p>So much for the RFC, but how does it look like in real life?</p>
<table style="width:100%;text-align:center;border:1px #D0D0D0 solid;margin-bottom:10px; margin-top:2px;padding:4px;" cellspacing="0" cellpadding="2" border="0">
<tr>
<td style="white-space: nowrap;text-align:left; vertical-align:bottom;">Maximal amount of simultaneous<br>connections to the same server</td>
<td><img src="http://mysterycity.de/blog/wp-content/uploads/icons/firefox.jpg" width="32" height="33"><br>Firefox 2</td>
<td><img src="http://mysterycity.de/blog/wp-content/uploads/icons/opera.jpg" width="32" height="33"><br>Opera 9</td>
<td><img src="http://mysterycity.de/blog/wp-content/uploads/icons/safari.jpg" width="32" height="33"><br> Safari 3</td>
<td><img src="http://mysterycity.de/blog/wp-content/uploads/icons/internet_explorer.jpg" width="32" height="33"><br>IE 7</td>
</tr>
<tr style="background-color:#EEEEEE;">
<td style="white-space: nowrap;text-align:left;">HTTP 1.1 connections</td>
<td> <strong style="color:#006600">8</strong> </td>
<td> <strong style="color:#006600">8</strong> </td>
<td> <em style="color:#D84E05">2</em> </td>
<td> <em style="color:#D84E05">2</em> </td>
</tr>
<tr>
<td style="white-space: nowrap;text-align:left;"><i>Persistent</i> HTTP 1.1 connections</td>
<td> <strong style="color:#006600">2</strong> </td>
<td> <strong style="color:#006600">8</strong> </td>
<td> <strong style="color:#006600">2</strong> </td>
<td> <strong style="color:#006600">2</strong> </td>
</tr>
<tr style="background-color:#EEEEEE;">
<td style="white-space: nowrap;text-align:left;">Values changeable?</td>
<td> <strong style="color:#006600">yes</strong><br><em>prefs.js</em> </td>
<td> <strong style="color:#006600">yes</strong><br><em>Opera6.ini</em> </td>
<td> <em style="color:#D84E05">no</em> </td>
<td> <strong style="color:#006600">yes</strong><br><em>Registry</em> </td>
</tr>
</table>
<p>To keep the amount of connections low, combine all CSS/JS files to one. While it is easy to put together all CSS and JavaScript files, we still have plenty of images which have to be loaded separately.</p>
<p>Instead of loading many small image files and applying them by using the <code>src</code> attribute, we will use a large single image file containing all images which are used on the web application. Each image will use this file as a background image with own <code>background-position</code> values. This technique is called <a href="http://www.alistapart.com/articles/sprites">CSS sprites</a>. There is a <a href="http://www.csssprites.com/">CSS sprites generator</a> which will not even generate an image containing all uploaded images, but also generate the CSS settings for it.</p>
<p>An optimal page would look like this:
<ul>
<li>one HTML file</li>
<li>one JS file</li>
<li>one CSS file</li>
<li>one or two <em>CSS sprites</em> images</li>
</ul>
<p>The last point depends on whether you have transparent images in your application or not. If you have, you can use <em>one</em> transparent PNG8 file or GIF file with a transparent background and <em>one</em> JPEG file for all images with more than 256 colors.</p>
<h3>Step 3: Build HTML on the server side</h3>
<p>Experiments have shown that a web page loads faster if its content is build from static HTML than from dynamically generated HTML objects which are applied to the document object. This is especially useful if you have complex structures or a many HTML elements.</p>
<h3>Step 4: Compress your data</h3>
<p>Compression is an old but powerful way to reduce the load time. If your user's browser is supporting HTTP 1.1, you can enable HTTP compression. Besides, all ASCII documents such as HTML, JavaScript and style sheet files can be compressed by removing all whitespace characters.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://mysterycity.de/blog/improving-the-loading-speed-of-web-applications/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

