<?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>Startup Security &#187; XSS</title>
	<atom:link href="http://startupsecurity.info/blog/tag/xss/feed/" rel="self" type="application/rss+xml" />
	<link>http://startupsecurity.info</link>
	<description>Security, for Startups</description>
	<lastBuildDate>Wed, 16 Dec 2009 18:42:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Basic Web Site Security</title>
		<link>http://startupsecurity.info/blog/2009/12/16/basic-web-site-security/</link>
		<comments>http://startupsecurity.info/blog/2009/12/16/basic-web-site-security/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 18:42:59 +0000</pubDate>
		<dc:creator>Damon Cortesi</dc:creator>
				<category><![CDATA[General Site Security]]></category>
		<category><![CDATA[Input Validation]]></category>
		<category><![CDATA[SQL Injection]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://startupsecurity.info/?p=152</guid>
		<description><![CDATA[Let&#8217;s talk for a brief moment about some very basic things you can do to help make your web application more secure. If I were to pick three of the most common issues I still see while browsing the web, they would be:

Error messages enabled
Cross-Site Scripting (unescaped input)
And yes, SQL Injection of some sort

The (un)fortunate [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s talk for a brief moment about some very basic things you can do to help make your web application more secure. If I were to pick three of the most common issues I <em>still</em> see while browsing the web, they would be:</p>
<ol>
<li>Error messages enabled</li>
<li>Cross-Site Scripting (unescaped input)</li>
<li>And yes, SQL Injection of some sort</li>
</ol>
<p>The (un)fortunate thing is that most of these issues are easily solvable. A generic error page, as opposed to a stack trace or verbose error message, can usually be implemented with a couple configuration changes. Yet, I still see large websites that spit out stack traces and code when an error occurs.</p>
<p>Cross-Site Scripting is another issue that still plagues us. Testing for it is simple &#8211; just enter something like <code>test&quot;&gt;</code> into an input field and if the resulting page displays that in raw HTML, chances are you have a problem. Every language has some form of HTML-escaping function and, if possible, it&#8217;s good to turn this on by default. This will be the case in Rails 3.0, thankfully.</p>
<p>Finally, I still see traces of SQL Injection on an all-too regular basis. Identified by the oh-so-dangerous single tick mark &#8211; &#8216; &#8211; and typically resulting in an error page that shouldn&#8217;t be showing up anyway if the first issue were address. That said, even if the error is obscured, it&#8217;s still possible to retrieve data using a technique called Blind SQL Injection. Any data getting sent to an SQL server should also be properly escaped or sent through stored procedures depending on the backend technology. Think SQL Injection isn&#8217;t a problem? Talk to RockYou, whose <a href="http://www.techcrunch.com/2009/12/14/rockyou-hack-security-myspace-facebook-passwords/">database of 32 million usernames and passwords was compromised</a> because of it.</p>
<p>Address those three things and (sadly) you&#8217;ll be ahead of the game.</p>
]]></content:encoded>
			<wfw:commentRss>http://startupsecurity.info/blog/2009/12/16/basic-web-site-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hacking and Compliance in a Web 2.0 World</title>
		<link>http://startupsecurity.info/blog/2008/12/12/hacking-and-compliance-in-a-web-20-world/</link>
		<comments>http://startupsecurity.info/blog/2008/12/12/hacking-and-compliance-in-a-web-20-world/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 17:23:49 +0000</pubDate>
		<dc:creator>Damon Cortesi</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SQL Injection]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://startupsecurity.info/?p=118</guid>
		<description><![CDATA[I recently presented at StartPad, a local co-working space in Seattle, on web application security. It was a great talk, mostly due to the great discussion generated by the crowd. StartPad was nice enough to record the presentation and you can find that, as well as my slides, below. Topics covered include: web application security, [...]]]></description>
			<content:encoded><![CDATA[<p>I recently <a href="http://startpad.org/countdown/startup-security-hacking-and-compliance-in-web-20-world">presented</a> at StartPad, a local co-working space in Seattle, on web application security. It was a great talk, mostly due to the great discussion generated by the crowd. StartPad was nice enough to record the presentation and you can find that, as well as my slides, below. Topics covered include: web application security, including the basics of SQL Injection and Cross-Site Scripting, Data Breach laws and even some discussion on PCI compliance. I also did some demos including a SQL Injectable Ruby on Rails app. <img src='http://startupsecurity.info/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Enjoy!</p>
<p><embed id="VideoPlayback" src="http://video.google.com/googleplayer.swf?docid=4161900480875230301&amp;hl=en&amp;fs=true" style="width: 400px; height: 326px;" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash"></embed></p>
<div id="__ss_792615" style="width: 425px; text-align: left;"><a title="StartPad Countdown 2 - Startup Security: Hacking and Compliance in a Web 2.0 World" href="http://www.slideshare.net/startpad/startpad-countdown-2-startup-security-hacking-and-compliance-in-a-web-20-world-presentation?type=powerpoint" style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;">StartPad Countdown 2 &#8211; Startup Security: Hacking and Compliance in a Web 2.0 World</a><br />
<object style="margin:0px" height="355" width="425"><param value="http://static.slideshare.net/swf/ssplayer2.swf?doc=hacking-in-web-2-1227746749549799-8&amp;stripped_title=startpad-countdown-2-startup-security-hacking-and-compliance-in-a-web-20-world-presentation" name="movie" /><param value="true" name="allowFullScreen" /><param value="always" name="allowScriptAccess" /><embed allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash" src="http://static.slideshare.net/swf/ssplayer2.swf?doc=hacking-in-web-2-1227746749549799-8&amp;stripped_title=startpad-countdown-2-startup-security-hacking-and-compliance-in-a-web-20-world-presentation" height="355" width="425"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View SlideShare <a title="View StartPad Countdown 2 - Startup Security: Hacking and Compliance in a Web 2.0 World on SlideShare" href="http://www.slideshare.net/startpad/startpad-countdown-2-startup-security-hacking-and-compliance-in-a-web-20-world-presentation?type=powerpoint" style="text-decoration:underline;">presentation</a> or <a href="http://www.slideshare.net/upload?type=powerpoint" style="text-decoration:underline;">Upload</a> your own. (tags: <a href="http://slideshare.net/tag/startpad" style="text-decoration:underline;">startpad</a> <a href="http://slideshare.net/tag/countdown" style="text-decoration:underline;">countdown</a>)</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://startupsecurity.info/blog/2008/12/12/hacking-and-compliance-in-a-web-20-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Avoid XSS on Google App Engine</title>
		<link>http://startupsecurity.info/blog/2008/10/28/avoid-xss-on-google-app-engine/</link>
		<comments>http://startupsecurity.info/blog/2008/10/28/avoid-xss-on-google-app-engine/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 18:54:35 +0000</pubDate>
		<dc:creator>Damon Cortesi</dc:creator>
				<category><![CDATA[Input Validation]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://startupsecurity.info/?p=61</guid>
		<description><![CDATA[A quick note for startups (or anybody) that may be deploying on Google App Engine:
As App Engine does not automatically escape output, you need to do this yourself.
As an example, here&#8217;s a very simple snippet:
Welcome, {{ firstname }}!
If &#8220;firstname&#8221; is not properly sanitized when stored in the database or escaped on output, I could easily [...]]]></description>
			<content:encoded><![CDATA[<p>A quick note for startups (or anybody) that may be deploying on Google App Engine:</p>
<p><strong>As App Engine does not automatically escape output, you need to do this yourself.</strong></p>
<p>As an example, here&#8217;s a very simple snippet:<br />
<code>Welcome, {{ firstname }}!</code></p>
<p>If &#8220;firstname&#8221; is not properly sanitized when stored in the database or escaped on output, I could easily make my first name the following:<br />
<code>damon&lt;script&gt;alert('hi!')&lt;/script&gt;</code></p>
<p>And then we would have stored JavaScript code execution, aka Cross-Site Scripting, as the &lt;script&gt; tag would get interpreted by the browser when echoed out.</p>
<p><strong>The solution?</strong></p>
<p>Simple, just |escape your output when coding in Google App Engine:<br />
<code>Welcome, {{ firstname<strong>|escape</strong> }}!</code></p>
<p>You can also sanitize data prior to storing it in the database, but as an additional layer it&#8217;s good to escape it on output as well.</p>
<p>I&#8217;m not sure if this is a derivative of the fact that GAE utilizes Django 0.9.7, but I guess we&#8217;ll see when they upgrade to Django 1.0 as it <a href="http://code.djangoproject.com/wiki/AutoEscaping">autoescapes</a> all output by default (thank you, Django!).</p>
]]></content:encoded>
			<wfw:commentRss>http://startupsecurity.info/blog/2008/10/28/avoid-xss-on-google-app-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Security in a Web 2.0 Startup World</title>
		<link>http://startupsecurity.info/blog/2008/10/28/security-in-a-web-20-startup-world/</link>
		<comments>http://startupsecurity.info/blog/2008/10/28/security-in-a-web-20-startup-world/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 08:22:13 +0000</pubDate>
		<dc:creator>Damon Cortesi</dc:creator>
				<category><![CDATA[Disclosure]]></category>
		<category><![CDATA[General Site Security]]></category>
		<category><![CDATA[SQL Injection]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://startupsecurity.info/?p=54</guid>
		<description><![CDATA[So as part of my recent Life Reboot, I&#8217;ve been getting pretty deeply embedded in the (Seattle) Startup world. One of the fun things is completely changing gears after being embedded in the security world for so long and digging in to a new group of people and technology. This means, of course, that I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>So as part of my recent <a href="http://dcortesi.com/2008/08/25/life-reboot/">Life Reboot</a>, I&#8217;ve been getting pretty deeply embedded in the (Seattle) Startup world. One of the fun things is completely changing gears after being embedded in the security world for so long and digging in to a new group of people and technology. This means, of course, that I&#8217;ve been paying much more attention to the little startups that crop up all over the place.</p>
<p>And what I&#8217;m finding is a little disappointing. </p>
<p>Perhaps I&#8217;ve become a little jaded in the past few years as a security consultant. Working with some large organizations where people usually &#8220;get&#8221; security makes most (yes, there is definitely still a decent level of feedback) conversations surrounding security fairly straightforward. Not only that, but large organizations generally have the benefit of staff that understand security risks and can effectively merge them with the desires of the business to reach a reasonable solution. But let&#8217;s take a brief tour over what I&#8217;ve come across recently. (Names left out to protect the innocent.)</p>
<p><strong>Exhibit 1</strong> &#8211; A random startup (Company A) allows signups on its web page. As with any new service, I&#8217;m sure reporters would have liked to have seen who was signing up from what companies, particularly in order to validate Company A&#8217;s claims of rampant success and signups. Company A, unfortunately, would display a users&#8217; email address on the confirmation signup page. That confirmation signup page had a parameter that could be incremented up or down to reveal email addresses of anybody that signed up.</p>
<p><strong>Class</strong>: Basic design flaw, forced browsing.<br />
<strong>Status</strong>: Fixed, within a half-hour of reporting.</p>
<p><strong>Exhibit 2</strong> &#8211; Another random startup (Company B) has a new service that claims to solve some of your email woes. One of the features of this service is that you can subscribe to RSS feeds of your Inbox. Unauthenticated RSS feeds. Yes, yes, there&#8217;s a SHA-256 hash in the URL, but both Google Reader and Bloglines are searchable, not to mention the potential for referral sniffing or just plain information leakage issues.</p>
<p><strong>Class</strong>: Design flaw, lack of authentication.<br />
<strong>Status</strong>: Removed, within a half-hour of reporting. Put back into place using HTTPS. Authentication still not used.</p>
<p><strong>Exhibit 3</strong> &#8211; Company C has a sweet iPhone app. They also have a web page that is somewhat integrated into the application. That web page is vulnerable to SQL Injection.</p>
<p><strong>Class</strong>: Input validation, SQL Injection.<br />
<strong>Status</strong>: Reported, twice. No response. Depression ensues.</p>
<p><strong>Exhibit 4</strong> &#8211; Company D releases an update to their product and is highly regarded as their service no longer requires the installation of an additional component. Unfortunately, the new feature that permits for that is Cross-Site Scriptable. </p>
<p><strong>Class</strong>: Input validation, Cross-Site Scripting.<br />
<strong>Status</strong>: Reported on October 13. Waiting.</p>
<p>I guess what depresses me is that some of these are pretty basic issues. With all of these problems, I came across them within 5 minutes of using the application. I suppose this post is a plea to the startup&#8217;s of the world&#8230;</p>
<p>Please, if you aren&#8217;t familiar with security, take the time to either talk to somebody that is or bring in a security person for even just half a day to take a look at your product. If nothing else, it&#8217;s one less fire that you&#8217;ll have to put out. You can even <a href="mailto:dacort@startupsecurity.info">contact me directly</a> if you&#8217;re not sure what questions to ask, although I&#8217;ll probably put a post up about that at some point.</p>
<p>Granted, the statement above applies to everybody as even Russ McRee frequently points out on his <a href="http://holisticinfosec.blogspot.com/">HolisticInfoSec</a> blog, many other organizations struggle with basic security flaws regardless of their size or status. </p>
]]></content:encoded>
			<wfw:commentRss>http://startupsecurity.info/blog/2008/10/28/security-in-a-web-20-startup-world/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
