<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
    <title>HackerCode</title>
    
    
    <link rel="alternate" type="text/html" href="http://www.hackerco.de/hackercode/" />
    <id>tag:typepad.com,2003:weblog-83447402755102476</id>
    <updated>2010-02-07T10:37:09-08:00</updated>
    
    <generator uri="http://www.typepad.com/">TypePad</generator>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Hackercode" /><feedburner:info uri="hackercode" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
        <title>New Samba directory traversal bug</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hackercode/~3/-Q4v6zQCDLM/new-samba-directory-traversal-bug.html" />
        <link rel="replies" type="text/html" href="http://www.hackerco.de/hackercode/2010/02/new-samba-directory-traversal-bug.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a0120a7f55fc1970b0128777273ea970c</id>
        <published>2010-02-07T10:37:09-08:00</published>
        <updated>2010-02-07T10:37:09-08:00</updated>
        <summary>Everything old is new again; it's 2010 and there are still undiscovered old chestnuts in enterprise applications. In this case, @kingcope has uncovered a directory traversal bug hidden in plain sight. If you look at the YouTube conversation, Samba luminary jeremy Allison acknowledges and promises to address the bug, so it's going to be closed quickly. It is a little disturbing, though, issues that we understand this well are still out there. I don't think the underlying issue is that there was a bug -- it's that the development process didn't catch something this obvious and well-understood. Along the same...</summary>
        <author>
            <name>Don Ankney</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Security" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Software" />
        
        <category scheme="http://sixapart.com/ns/types#tag" term="bug" />
        <category scheme="http://sixapart.com/ns/types#tag" term="hacker" />
        <category scheme="http://sixapart.com/ns/types#tag" term="Samba" />
        <category scheme="http://sixapart.com/ns/types#tag" term="sdl" />
        <category scheme="http://sixapart.com/ns/types#tag" term="Security" />
        <category scheme="http://sixapart.com/ns/types#tag" term="Software" />
        
<content type="html" xml:lang="en-us" xml:base="http://www.hackerco.de/hackercode/">
&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;Everything old is new again; it's 2010 and there are still undiscovered old chestnuts in enterprise applications. In this case, &lt;a href="http://twitter.com/Kingcope" target="_blank"&gt;@kingcope&lt;/a&gt; has uncovered a directory traversal bug hidden in plain sight.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;center&gt;
  &lt;object width="425" height="344"&gt;
    &lt;param name="movie" value="http://www.youtube.com/v/NN50RtZ2N74&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" /&gt;
    &lt;param name="allowFullScreen" value="true" /&gt;
    &lt;param name="allowscriptaccess" value="always" /&gt;
    &lt;embed src="http://www.youtube.com/v/NN50RtZ2N74&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;
  &lt;/object&gt;
&lt;/center&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If you look at the YouTube conversation, &lt;a class="zem_slink" href="http://en.wikipedia.org/wiki/Samba_%28software%29" title="Samba (software)" rel="wikipedia"&gt;Samba&lt;/a&gt; luminary jeremy Allison acknowledges and promises to address the bug, so it's going to be closed quickly. It is a little disturbing, though, issues that we understand this well are still out there.&lt;/p&gt;
&lt;p&gt;I don't think the underlying issue is that there was a bug -- it's that the development process didn't catch something this obvious and well-understood. Along the same lines, the fix isn't simply patching a bug; Samba should re-examine it's security process and code acceptance criteria.&lt;/p&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/Hackercode/~4/-Q4v6zQCDLM" height="1" width="1"/&gt;</content>


    <feedburner:origLink>http://www.hackerco.de/hackercode/2010/02/new-samba-directory-traversal-bug.html</feedburner:origLink></entry>
    <entry>
        <title>Chinese hacking hits mainstream media</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hackercode/~3/dBYvZycJ3Os/chinese-hacking-hits-mainstream-media.html" />
        <link rel="replies" type="text/html" href="http://www.hackerco.de/hackercode/2010/02/chinese-hacking-hits-mainstream-media.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a0120a7f55fc1970b0120a8509584970b</id>
        <published>2010-02-02T14:34:12-08:00</published>
        <updated>2010-02-02T14:05:24-08:00</updated>
        <summary>Google's recent trouble with Chinese hackers has brought mainstream media attention to very old news in the security world: China has lots of hackers; some of them work for the government; some of them are criminals. Is this really the best the NY Times can do? Internet security experts say China has legions of hackers just like Majia, and that they are behind an escalating number of global attacks to steal credit card numbers, commit corporate espionage and even wage online warfare on other nations, which in some cases have been traced back to China. via www.nytimes.com At least they...</summary>
        <author>
            <name>Don Ankney</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Security" />
        
        <category scheme="http://sixapart.com/ns/types#tag" term="China" />
        <category scheme="http://sixapart.com/ns/types#tag" term="dark visitor" />
        <category scheme="http://sixapart.com/ns/types#tag" term="google" />
        <category scheme="http://sixapart.com/ns/types#tag" term="hacker" />
        <category scheme="http://sixapart.com/ns/types#tag" term="security" />
        
<content type="xhtml" xml:lang="en-us" xml:base="http://www.hackerco.de/hackercode/"><div xmlns="http://www.w3.org/1999/xhtml"><p style="FONT-SIZE: 9px"><span style="FONT-SIZE: 10px"><span style="FONT-SIZE: 11px"><span style="FONT-SIZE: 12px"><span style="FONT-SIZE: 13px">Google's recent trouble with Chinese hackers has brought mainstream media attention to very old news in the security world: China has lots of hackers; some of them work for the government; some of them are criminals. Is this really the best the NY Times can do?</span></span></span></span></p>
<blockquote>
<p>Internet security experts say China has legions of hackers just like Majia, and that they are behind an escalating number of global attacks to steal credit card numbers, commit corporate espionage and even wage online warfare on other nations, which in some cases have been traced back to China. </p></blockquote>
<p><small>via <a href="http://www.nytimes.com">www.nytimes.com</a></small></p>
<p><small><span style="FONT-SIZE: 1px"><span style="FONT-SIZE: 2px"><span style="FONT-SIZE: 3px"><span style="FONT-SIZE: 4px"><span style="FONT-SIZE: 5px"><span style="FONT-SIZE: 5px"><span style="FONT-SIZE: 6px"><span style="FONT-SIZE: 7px"><span style="FONT-SIZE: 7px"><span style="FONT-SIZE: 8px"><span style="FONT-SIZE: 9px"><span style="FONT-SIZE: 9px"><span style="FONT-SIZE: 10px"><span style="FONT-SIZE: 10px"><span style="FONT-SIZE: 11px"><span style="FONT-SIZE: 12px"><span style="FONT-SIZE: 13px">At least they interviewed Scott J. Henderson, even if it is after the page jump. He has been studying the Chinese hacker culture for a very long time. If you're interested in the topic, his work is pretty much the definitive view (at least in the non-classified world). You should follow his blog,<a href="http://www.thedarkvisitor.com/">The Dark Visitor</a>. I'd also recommend his <a href="http://www.lulu.com/content/1345238">book of the same title</a>.</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></small></p>
<p><small><span style="FONT-SIZE: 1px"><span style="FONT-SIZE: 2px"><span style="FONT-SIZE: 3px"><span style="FONT-SIZE: 4px"><span style="FONT-SIZE: 5px"><span style="FONT-SIZE: 5px"><span style="FONT-SIZE: 6px"><span style="FONT-SIZE: 7px"><span style="FONT-SIZE: 7px"><span style="FONT-SIZE: 8px"><span style="FONT-SIZE: 9px"><span style="FONT-SIZE: 9px"><span style="FONT-SIZE: 10px"><span style="FONT-SIZE: 10px"><span style="FONT-SIZE: 11px"><span style="FONT-SIZE: 12px"><span style="FONT-SIZE: 13px" /></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></small> </p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/Hackercode/~4/dBYvZycJ3Os" height="1" width="1" /></div></content>


    <feedburner:origLink>http://www.hackerco.de/hackercode/2010/02/chinese-hacking-hits-mainstream-media.html</feedburner:origLink></entry>
    <entry>
        <title>EFF illustrates difficulty of anonymous web browsing</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hackercode/~3/wID9f_S3Y90/eff-illustrates-difficulty-of-anonymous-web-browsing.html" />
        <link rel="replies" type="text/html" href="http://www.hackerco.de/hackercode/2010/01/eff-illustrates-difficulty-of-anonymous-web-browsing.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a0120a7f55fc1970b01287721e06e970c</id>
        <published>2010-01-28T13:08:17-08:00</published>
        <updated>2010-01-28T13:08:17-08:00</updated>
        <summary>The Electronic Frontier Foundation (EFF) has a new tool called Panopticlick that examines you browser configuration (or at least what it announces about itself) and compares against it's database to determine how unique your presense is. It turns out that significant identifying information is available even with IP obfuscation and cookies disabled; Private browsing doesn't quite cut it ... Is your browser configuration rare or unique? If so, web sites may be able to track you, even if you limit or disable cookies. Panopticlick tests your browser to see how unique it is based on the information it will share...</summary>
        <author>
            <name>Don Ankney</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Identity" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="News" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Privacy" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Security" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Software" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Trust" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Web/Tech" />
        
        <category scheme="http://sixapart.com/ns/types#tag" term="anonymity" />
        <category scheme="http://sixapart.com/ns/types#tag" term="browser" />
        <category scheme="http://sixapart.com/ns/types#tag" term="cookies" />
        <category scheme="http://sixapart.com/ns/types#tag" term="EFF" />
        <category scheme="http://sixapart.com/ns/types#tag" term="panopticlick" />
        <category scheme="http://sixapart.com/ns/types#tag" term="privacy" />
        <category scheme="http://sixapart.com/ns/types#tag" term="security" />
        <category scheme="http://sixapart.com/ns/types#tag" term="web" />
        
<content type="xhtml" xml:lang="en-us" xml:base="http://www.hackerco.de/hackercode/"><div xmlns="http://www.w3.org/1999/xhtml"><p>The Electronic Frontier Foundation (EFF) has a new tool called <a href="http://panopticlick.eff.org/" target="_blank">Panopticlick</a> that examines you browser configuration (or at least what it announces about itself) and compares against it's database to determine how unique your presense is. It turns out that significant identifying information is available even with<a href="http://www.torproject.org/" target="_blank"> IP obfuscation</a> and cookies disabled; Private browsing doesn't quite cut it ... </p>
<blockquote dir="ltr">
<div id="content">
<div id="front">
<p style="TEXT-ALIGN: justify">Is your browser configuration rare or unique? If so, web sites may be able to track you, <em>even if you limit or disable cookies.</em></p>
<p style="TEXT-ALIGN: justify">Panopticlick tests your browser to see how unique it is based on the <a href="https://www.eff.org/deeplinks/2010/01/primer-information-theory-and-privacy"><font color="#0066cc">information</font></a> it will share with sites it visits. Click below and you will be given a uniqueness score, letting you see how easily identifiable you might be as you surf the web.<a href="http://panopticlick.eff.org" target="_blank">[from<em> panopticlick.eff.org</em></a>]</p></div></div></blockquote><a /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/Hackercode/~4/wID9f_S3Y90" height="1" width="1" /></div></content>


    <feedburner:origLink>http://www.hackerco.de/hackercode/2010/01/eff-illustrates-difficulty-of-anonymous-web-browsing.html</feedburner:origLink></entry>
    <entry>
        <title>Clinton cybersecurity speech misses the mark on privacy</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hackercode/~3/MxEoGQQlcLw/clinton-cybersecurity-speech-misses-the-mark-on-privacy.html" />
        <link rel="replies" type="text/html" href="http://www.hackerco.de/hackercode/2010/01/clinton-cybersecurity-speech-misses-the-mark-on-privacy.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a0120a7f55fc1970b01287700a25b970c</id>
        <published>2010-01-22T08:56:32-08:00</published>
        <updated>2010-01-22T08:56:32-08:00</updated>
        <summary>In case you didn't catch Clinton's address on cybersecurity last night, I'm imbedding it here: Generally, she's saying the right things -- an open and uncensored Internet is a tremendous force for good in the world. She should also be addressing net neutrality in this context, but I can understand that she didn't want to broaden her scope too much. Then, a couple of minutes in, she says this: Now, all societies recognize that free expression has its limits. We do not tolerate those who incite others to violence, such as the agents of al-Qaida who are, at this moment,...</summary>
        <author>
            <name>Don Ankney</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Identity" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="News" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Privacy" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Security" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Systems" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Web/Tech" />
        
        <category scheme="http://sixapart.com/ns/types#tag" term="censorship" />
        <category scheme="http://sixapart.com/ns/types#tag" term="china" />
        <category scheme="http://sixapart.com/ns/types#tag" term="clinton" />
        <category scheme="http://sixapart.com/ns/types#tag" term="cybersecurity" />
        <category scheme="http://sixapart.com/ns/types#tag" term="google" />
        <category scheme="http://sixapart.com/ns/types#tag" term="government" />
        <category scheme="http://sixapart.com/ns/types#tag" term="identity" />
        <category scheme="http://sixapart.com/ns/types#tag" term="infowar" />
        <category scheme="http://sixapart.com/ns/types#tag" term="security" />
        <category scheme="http://sixapart.com/ns/types#tag" term="speech" />
        <category scheme="http://sixapart.com/ns/types#tag" term="state department" />
        
<content type="xhtml" xml:lang="en-us" xml:base="http://www.hackerco.de/hackercode/"><div xmlns="http://www.w3.org/1999/xhtml">In case you didn't catch Clinton's address on cybersecurity last night, I'm imbedding it here:<br /><br /><br />
<p align="center" class="asset asset-video" style="MARGIN: 0px auto; DISPLAY: block">
<object height="313" width="384"><param name="movie" value="http://www.youtube.com/v/-I2VUhHVToE&amp;fs=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" />
<embed allowfullscreen="true" allowscriptaccess="always" height="313" src="http://www.youtube.com/v/-I2VUhHVToE&amp;fs=1" type="application/x-shockwave-flash" width="384" /></object></p>
<p><br />Generally, she's saying the right things -- an open and uncensored Internet is a tremendous force for good in the world. She should also be addressing <a href="http://en.wikipedia.org/wiki/Network_neutrality" target="_blank">net neutrality</a> in this context, but I can understand that she didn't want to broaden her scope too much.</p>
<p>Then, a couple of minutes in, she says this:</p>
<blockquote dir="ltr">
<p>Now, all societies recognize that free expression has its limits. We do not tolerate those who incite others to violence, such as the agents of al-Qaida who are, at this moment, using the internet to promote the mass murder of innocent people across the world. And hate speech that targets individuals on the basis of their race, religion, ethnicity, gender, or sexual orientation is reprehensible. It is an unfortunate fact that these issues are both growing challenges that the international community must confront together. And we must also grapple with the issue of anonymous speech. Those who use the internet to recruit terrorists or distribute stolen intellectual property cannot divorce their online actions from their real world identities. But these challenges must not become an excuse for governments to systematically violate the rights and privacy of those who use the internet for peaceful political purposes<em><a href="http://www.state.gov/secretary/rm/2010/01/135519.htm" target="_blank">.[Full text of the speech here]</a></em></p></blockquote><br />
<p>So, privacy, anonymity, and an open economy of ideas is good except when our enemies have it? Despite all of the rhetoric to the contrary, I don't think she really wants a free Internet. She just wants an Internet that promotes US best-interests.</p>
<p>Considering some of the electronic surveillance actions our government took after 9/11, adminishing China is a little bit of the pot calling the kettle black. I was hoping that we'd also take this opportunity to embrace these ideas domestically as well as promoting them overseas.</p>
<p>Embracing a free exchange of information means embracing the exchange of dangerous and radical ideas along with the popular and prosperous ones. You cannot selectively grant privacy and anonymity -- either you support it or you don't.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/Hackercode/~4/MxEoGQQlcLw" height="1" width="1" /></div></content>


    <feedburner:origLink>http://www.hackerco.de/hackercode/2010/01/clinton-cybersecurity-speech-misses-the-mark-on-privacy.html</feedburner:origLink></entry>
    <entry>
        <title>Secure web form authentication using stored procedures</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hackercode/~3/jszEd-UIky4/secure-web-form-authentication-using-stored-produres.html" />
        <link rel="replies" type="text/html" href="http://www.hackerco.de/hackercode/2010/01/secure-web-form-authentication-using-stored-produres.html" thr:count="2" thr:updated="2010-02-09T21:21:14-08:00" />
        <id>tag:typepad.com,2003:post-6a0120a7f55fc1970b0120a7f59d0f970b</id>
        <published>2010-01-21T20:37:40-08:00</published>
        <updated>2010-02-09T21:22:38-08:00</updated>
        <summary>This is a posting I've been planning to do for several months but am just finding time for. One of the most common questions I get from developers is how they should be handling authentication. My advice is always the same - don't. I have no idea why developers want to be custodians of data as sensitive as a username and password when there are federated identity providers such as OpenID that will accept that risk on the developer's behalf. Some developers insist on localized identity management, so the next couple of posts are going to illustrate how they can...</summary>
        <author>
            <name>Don Ankney</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Essays" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Security" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Software" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Systems" />
        
        <category scheme="http://sixapart.com/ns/types#tag" term="authentication" />
        <category scheme="http://sixapart.com/ns/types#tag" term="code" />
        <category scheme="http://sixapart.com/ns/types#tag" term="mysql" />
        <category scheme="http://sixapart.com/ns/types#tag" term="php" />
        <category scheme="http://sixapart.com/ns/types#tag" term="sql injection" />
        <category scheme="http://sixapart.com/ns/types#tag" term="stored procedure" />
        <category scheme="http://sixapart.com/ns/types#tag" term="web application security" />
        <category scheme="http://sixapart.com/ns/types#tag" term="web form" />
        
<content type="xhtml" xml:lang="en-us" xml:base="http://www.hackerco.de/hackercode/"><div xmlns="http://www.w3.org/1999/xhtml"><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-size: 1em; font-weight: normal;" />
<p style="font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233; min-height: 15px;"><span style="color: #333333; font-family: arial,helvetica,hirakakupro-w3,osaka,'ms pgothic',sans-serif;">This is a posting I've been planning to do for several months but am just finding time for. One of the most common questions I get from developers is how they should be handling authentication. My advice is always the same - don't. I have no idea why developers want to be custodians of data as sensitive as a username and password when there are federated identity providers such as <a href="https://openid.org/home">OpenID</a> that will accept that risk on the developer's behalf.</span></p>
<p style="margin: 0px 0px 9px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;"><span color="#333333" size="3;" style="font-family: arial,helvetica,hirakakupro-w3,osaka,'ms pgothic',sans-serif;"><span style="font-size: 13px;">Some developers insist on localized identity management, so the next couple of posts are going to illustrate how they can implement web forms securely using MySQL stored procedures and <a href="http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html#function_uuid"><span style="color: #56763a;">UUIDs</span></a> to insulate them from the risks storing credentials.</span></span></p>
<p style="margin: 0px 0px 9px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">Before getting to code-level specifics, let's define the problem we're solving.</p>
<p style="margin: 0px 0px 9px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">First, we want to make sure that a single user's credentials cannot be discovered via SQL injection or other application-level security flaws. Most developers mitigate this by only storing one-way hashes of passwords.</p>
<p style="margin: 0px 0px 9px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">Second, because hashes are susceptible to <a href="http://en.wikipedia.org/wiki/Rainbow_table"><span style="color: #56763a;">rainbow tables attacks</span></a>, we want to make sure that an attacker cannot obtain any aggregated credential hashes. Keep in mind that many users utilize the same (or similar) passwords across many system. This means that aggregated credential hashed are extremely valuable to an attacker. To mitigate this, we will check authentication within a stored procedure. If the password hash is checked via a stored procedure and the application user only has execute permissions, an attacker cannot extract aggregated credentials even if they completely control an application.</p>
<p style="margin: 0px 0px 9px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">Finally, we want to make sure that an attacker cannot easily mine your database for aggregated private or sensitive data through application-level flaws. By using a UUID as the primary key instead of a username or canonical index, we make it very difficult for an attacker to extract data for a single arbitrary user; this also makes data aggregation more difficult.</p>
<p style="margin: 0px 0px 9px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">That's probably as clear as mud, so I'll explain via code examples. The principals all apply no matter what platform you're on, but the examples are all using MySQL 5.1.x.</p>
<p style="margin: 0px 0px 9px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;" /><p><span color="#333233" size="3;" style="font-family: Arial;"><span style="color: #333333; font-family: arial,helvetica,hirakakupro-w3,osaka,'ms pgothic',sans-serif; font-size: 13px;" /></span></p><span color="#333233" size="3;" style="font-family: Arial;"><p style="border-width: 0px; margin: 0px 0px 9px; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">Here's a simple MySQL stored function for creating users:</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">DELIMITER |</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; min-height: 12px;" /><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">CREATE FUNCTION addUser (</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">name VARCHAR(16),</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">pass VARCHAR(32),</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">fullname VARCHAR(32),</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">email VARCHAR(64))</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">RETURNS CHAR(36)</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; min-height: 12px;" /><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; min-height: 12px;" /><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">BEGIN</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">DECLARE returnValue CHAR(36) DEFAULT UUID();</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">IF ((SELECT COUNT(username) FROM users WHERE username = name</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">GROUP BY username) &gt; 0)</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">THEN SET returnValue := NULL;</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">ELSE</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">INSERT INTO users (userid, username, passphrase, fullname, emailaddr) VALUES (returnValue, name, pass,</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">fullname, email);</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">END IF;</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">RETURN returnValue;</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none;">END;</p><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Monaco; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; min-height: 15px;" /><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">In this case, we are inserting values (username, password, full name, and e-mail) into a table called users. We are also creating a UUID for the account as it's created. If the function is successful, it will return the UUID. If it fails, it will return NULL.</p><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233; min-height: 15px;" /><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">If we create this function with "definer" privileges, then it can be executed as different user than the web application's MySQL account, which is the invoker. This way, the invoker account can create a user without any permissions to the underlying users table. So, even if an attacker can compromise the application's MySQL username and password, they cannot extract any data from the users table.</p><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233; min-height: 15px;" /><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">Here's how we authenticate the user:</p><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233; min-height: 15px;" /><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">DELIMITER |</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233; min-height: 12px;" /><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">CREATE PROCEDURE authenticateUser (</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">IN uname VARCHAR(16),</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">IN passphrase VARCHAR(32)</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">)</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233; min-height: 12px;" /><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">BEGIN</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">SELECT u.userid FROM users AS u WHERE u.username = uname AND u.pass = passphrase;</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">END</p><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233; min-height: 15px;" /><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233; min-height: 15px;" /><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">Notice that all we're getting back is a UUID (or NULL if the authentication attempt fails). This UUID is the primary key for the user and necessary to extract any other data from the database. For example:</p><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233; min-height: 15px;" /><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">DELIMITER |</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233; min-height: 12px;" /><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">CREATE PROCEDURE getEmail (</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">IN userUuid CHAR(36)</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">)</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233; min-height: 12px;" /><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">BEGIN</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">SELECT u.e-mail FROM users AS u WHERE u.userid = userUuid;</p><p style="border-width: 0px; margin: 0px 0px 0px 18px; padding: 0px; font-family: 'Courier New'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 11px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">END</p><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233; min-height: 15px;" /><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">Do you see the elegance of the solution? The attacker cannot get the e-mail address without the UUID. In order to get the UUID, the attacker needs the username and password <em>even if they've compromised the web application's database account</em>. While e-mail isn't particularly risky, you can image the usefulness of the technique in protecting your customer's sensitive data.</p><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233; min-height: 15px;" /><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233;">There is one important limitation on this technique -- it doesn't solve old fashioned SQL injection. To solve that, only access the database using <a href="http://en.wikipedia.org/wiki/SQL_injection#Parameterized_statements" style="text-decoration: underline;">parameterized queries</a> (or, as PHP developers refer to them, <a href="http://php.net/manual/en/pdo.prepared-statements.php" style="text-decoration: underline;">prepared statements</a>). This is the only technique that can completely eliminate SQL Injection vulnerabilities.</p><p style="border-width: 0px; margin: 0px 0px 0.75em; padding: 0px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 13px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: #333233; min-height: 15px;" /></span><p /><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/Hackercode/~4/jszEd-UIky4" height="1" width="1" /></div></content>


    <feedburner:origLink>http://www.hackerco.de/hackercode/2010/01/secure-web-form-authentication-using-stored-produres.html</feedburner:origLink></entry>
    <entry>
        <title>Bar Camp Seattle presentation on web application security</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hackercode/~3/bQYMZsxgAK4/bar-camp-seattle-presentation-on-web-application-security.html" />
        <link rel="replies" type="text/html" href="http://www.hackerco.de/hackercode/2009/06/bar-camp-seattle-presentation-on-web-application-security.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a0120a7f55fc1970b012876f8b780970c</id>
        <published>2009-06-16T19:01:52-07:00</published>
        <updated>2009-06-16T19:01:52-07:00</updated>
        <summary>I gave a 30 minute introduction to web application security at Bar Camp Seattle this weekend. Here are my slides: Web Application Security 2009 Web Application Security 2009 dankney These slides are for my standard "Introduction to Web Application Security" presentation. I cover some basic secure design principals and go through the OWASP Top 10 Web Vulnerabilities as well as some common strategies for mitigating them. Publish at Scribd or explore others: security session management I originally planned on giving a non-technical introduction to threat modeling, but the literally everyone at my session was a developer, so I swapped out...</summary>
        <author>
            <name>Don Ankney</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Community" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Security" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Software" />
        
        
<content type="xhtml" xml:lang="en-us" xml:base="http://www.hackerco.de/hackercode/"><div xmlns="http://www.w3.org/1999/xhtml">I gave a 30 minute introduction to web application security at Bar Camp Seattle this weekend. Here are my slides:<div><br /></div><div><br /></div>

<a href="http://www.scribd.com/doc/16500846/Web-Application-Security-2009" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;" title="View Web Application Security 2009 on Scribd">Web Application Security 2009</a> <object xmlns:dc="http://purl.org/dc/terms/" xmlns:media="http://search.yahoo.com/searchmonkey/media/" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="500" id="doc_646591163742274" name="doc_646591163742274" rel="media:document" resource="http://d.scribd.com/ScribdViewer.swf?document_id=16500846&amp;access_key=key-16hakv5hjebfxla80s3m&amp;page=1&amp;version=1&amp;viewMode=" width="100%">		<param name="movie" value="http://d.scribd.com/ScribdViewer.swf?document_id=16500846&amp;access_key=key-16hakv5hjebfxla80s3m&amp;page=1&amp;version=1&amp;viewMode=" /> 		<param name="quality" value="high" /> 		<param name="play" value="true" />		<param name="loop" value="true" /> 		<param name="scale" value="showall" />		<param name="wmode" value="opaque" /> 		<param name="devicefont" value="false" />		<param name="bgcolor" value="#ffffff" /> 		<param name="menu" value="true" />		<param name="allowFullScreen" value="true" /> 		<param name="allowScriptAccess" value="always" /> 		<param name="salign" value="" />    				<embed align="middle" allowfullscreen="true" allowscriptaccess="always" bgcolor="#ffffff" devicefont="false" height="500" loop="true" menu="true" name="doc_646591163742274_object" play="true" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" salign="" scale="showall" src="http://d.scribd.com/ScribdViewer.swf?document_id=16500846&amp;access_key=key-16hakv5hjebfxla80s3m&amp;page=1&amp;version=1&amp;viewMode=" type="application/x-shockwave-flash" width="100%" wmode="opaque" />					 							<span href="http://i.scribd.com/public/images/uploaded/38755783/3fAD8yeiDUv_thumbnail.jpeg" rel="media:thumbnail"> 						<span property="media:title">Web Application Security 2009</span>			<span property="dc:creator">dankney</span> 							<span property="dc:description">These slides are for my standard "Introduction to Web Application Security" presentation. I cover some basic secure design principals and go through the OWASP Top 10 Web Vulnerabilities as well as some common strategies for mitigating them.</span> 						<span content="Text" property="dc:type"> 			</span></span></object>	<div style="margin: 6px auto 3px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block;">    <a href="http://www.scribd.com/upload" style="text-decoration: underline;">Publish at Scribd</a> or <a href="http://www.scribd.com/browse" style="text-decoration: underline;">explore</a> others:                <a href="http://www.scribd.com/tag/security" style="text-decoration: underline;">security</a>              <a href="http://www.scribd.com/tag/session%20management" style="text-decoration: underline;">session management</a>      	</div>	


<div><br /></div><div>I originally planned on giving a non-technical introduction to threat modeling, but the literally everyone at my session was a developer, so I swapped out for this one at the last minute.</div><div><br /></div><div>I guess this means I have a non-technical talk ready to go at a moments notice. Never a bad thing ...</div><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/Hackercode/~4/bQYMZsxgAK4" height="1" width="1" /></div></content>


    <feedburner:origLink>http://www.hackerco.de/hackercode/2009/06/bar-camp-seattle-presentation-on-web-application-security.html</feedburner:origLink></entry>
    <entry>
        <title>Original Mac Pro and 64-bit BootCamp</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hackercode/~3/C6HvYGC0OjM/original-mac-pro-and-64-bit-bootcamp.html" />
        <link rel="replies" type="text/html" href="http://www.hackerco.de/hackercode/2009/06/original-mac-pro-and-64-bit-bootcamp.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a0120a7f55fc1970b012876f8b793970c</id>
        <published>2009-06-07T22:51:14-07:00</published>
        <updated>2009-06-07T22:51:14-07:00</updated>
        <summary>Apple really screwed the pooch on this one. I own an original Mac Pro -- it's been a fabulous machine and is still screaming fast three years later, but it will only recognize two gigs of RAM running 32-bit Vista. This isn't a Windows thing, mind you, it's a limitation in the Mac firmware. So, this morning, after doubling the RAM in my machine, I decided to upgrade to 64-bit Vista. The problem is, Apple doesn't support it -- see here. Not only do they cripple 32-bit RAM support in the firmware, but they don't support 64-bit installation on my...</summary>
        <author>
            <name>Don Ankney</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Software" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Systems" />
        
        
<content type="xhtml" xml:lang="en-us" xml:base="http://www.hackerco.de/hackercode/"><div xmlns="http://www.w3.org/1999/xhtml">Apple really screwed the pooch on this one. I own an original Mac Pro -- it's been a fabulous machine and is still screaming fast three years later, but it will only recognize two gigs of RAM running 32-bit Vista. This isn't a Windows thing, mind you, it's a limitation in the Mac firmware.<div><br /></div><div>So, this morning, after doubling the RAM in my machine, I decided to upgrade to 64-bit Vista. The problem is, Apple doesn't support it -- <a href="http://support.apple.com/kb/HT1846">see here</a>.</div><div><br /></div><div>Not only do they cripple 32-bit RAM support in the firmware, but they don't support 64-bit installation on my machine. It doesn't sound like interoperability is really a goal in Cupertino.</div><div><br /></div><div>The Apple support forums weren't helpful, so after searching, I <a href="http://social.msdn.microsoft.com/forums/en-US/servervirtualization/thread/a8ae28ed-daf8-4e47-a356-84fb57cf9016/">found a solution on MSDN</a> of all places. The thread deals with installing HyperV, but it works for Vista as well.</div><div><br /></div><div>All you have to do is boot into Windows,  copy the contents of the Vista install DVD to a temporary location, and use oscdimg.exe from the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=94BB6E34-D890-4932-81A5-5B50C657DE08&amp;displaylang=en">Windows Automated Installation Kit</a>.</div><div><br /></div><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/Hackercode/~4/C6HvYGC0OjM" height="1" width="1" /></div></content>


    <feedburner:origLink>http://www.hackerco.de/hackercode/2009/06/original-mac-pro-and-64-bit-bootcamp.html</feedburner:origLink></entry>
    <entry>
        <title>Security lessons from behavioral economics</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hackercode/~3/D1IlQ1EC5a0/security-lessons-from-behavioral-economics.html" />
        <link rel="replies" type="text/html" href="http://www.hackerco.de/hackercode/2009/05/security-lessons-from-behavioral-economics.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a0120a7f55fc1970b012876f8b77e970c</id>
        <published>2009-05-29T10:22:47-07:00</published>
        <updated>2009-05-29T10:22:47-07:00</updated>
        <summary>Ted has posted another fascinating talk, this time by behavioral economist Dan Ariely. The talk is essentially about how context and complexity can influence decision-making contrary to what one would generally call a rational process. While interesting in its own right, this analysis could have an immense effect on security. In it's simplest form, OpenBSD understood this years ago with "secure by default" -- make insecure configurations more difficult than secure configuration and systems will, for the most part, be configured properly. One can take this a step further and apply it to user interface design. Internet Explorer 8 does...</summary>
        <author>
            <name>Don Ankney</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Culture" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Security" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Software" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Systems" />
        
        
<content type="xhtml" xml:lang="en-us" xml:base="http://www.hackerco.de/hackercode/"><div xmlns="http://www.w3.org/1999/xhtml"><p align="left">Ted has posted another fascinating talk, this time by behavioral economist Dan Ariely. The talk is essentially about how context and complexity can influence decision-making contrary to what one would generally call a rational process.</p>
<p align="left">While interesting in its own right, this analysis could have an immense effect on security. In it's simplest form, OpenBSD understood this years ago with "secure by default" -- make insecure configurations more difficult than secure configuration and systems will, for the most part, be configured properly.</p>
<p align="left">One can take this a step further and apply it to user interface design. Internet Explorer 8 does this with SSL errors -- the user is steered towards not viewing a site instead of blindly clicking through to a potentially hostile page.</p>
<p align="left">Human error is the single largest vulnerability out there. Instead of looking at security as the enemy of usability, there could be a significant security gain by engaging our usability experts to guide users into making smarter decisions about security.</p>
<p align="left"> </p>
<p align="center"><embed allowfullscreen="true" bgcolor="#ffffff" flashvars="vu=http://video.ted.com/talks/embed/DanAriely_2008P-embed-PARTNER_high.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/DanAriely-2008P.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=548" height="326" pluginspace="http://www.macromedia.com/go/getflashplayer" src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" type="application/x-shockwave-flash" width="446" wmode="transparent" /></p>
<p align="center"> </p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/Hackercode/~4/D1IlQ1EC5a0" height="1" width="1" /></div></content>


    <feedburner:origLink>http://www.hackerco.de/hackercode/2009/05/security-lessons-from-behavioral-economics.html</feedburner:origLink></entry>
    <entry>
        <title>LayerOne presentation video</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hackercode/~3/gpKwPE-79kI/layerone-presentation-video.html" />
        <link rel="replies" type="text/html" href="http://www.hackerco.de/hackercode/2009/05/layerone-presentation-video.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a0120a7f55fc1970b0120a7f59d81970b</id>
        <published>2009-05-28T09:19:33-07:00</published>
        <updated>2009-05-28T09:19:33-07:00</updated>
        <summary>The folks at LayerOne have already posted video of the talks. There were some excellent talks. If you have the time, I'd especially recommend David Bryan's talk on GNURadio and Joe McCray's Advanced SQL Injection. Here's my talk, Is XSS Solvable? (and yes, I know I speak too quickly):</summary>
        <author>
            <name>Don Ankney</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="Community" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Security" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Software" />
        
        
<content type="xhtml" xml:lang="en-us" xml:base="http://www.hackerco.de/hackercode/"><div xmlns="http://www.w3.org/1999/xhtml"><p>The folks at LayerOne have <a href="http://layerone.info/?page_id=132">already posted video of the talks</a>. There were some excellent talks. If you have the time, I'd especially recommend <a href="http://www.youtube.com/watch?v=-c2xcb21X2Q">David Bryan's talk on GNURadio</a> and <a href="http://www.youtube.com/watch?v=WkHkryIoLD0">Joe McCray's <em>Advanced SQL Injection</em></a>.</p>
<p> Here's my talk, <em>Is XSS Solvable</em>? (and yes, I know I speak too quickly):</p>
<p> </p>
<p><embed allowfullscreen="true" allowscriptaccess="always" height="344" src="http://www.youtube.com/v/LnLwPxCN2r0&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" width="425" /></p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/Hackercode/~4/gpKwPE-79kI" height="1" width="1" /></div></content>


    <feedburner:origLink>http://www.hackerco.de/hackercode/2009/05/layerone-presentation-video.html</feedburner:origLink></entry>
    <entry>
        <title>Slides from LayerOne are up</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Hackercode/~3/wCDCLQkv6hU/slides-from-layerone-are-up.html" />
        <link rel="replies" type="text/html" href="http://www.hackerco.de/hackercode/2009/05/slides-from-layerone-are-up.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a0120a7f55fc1970b012876f8b734970c</id>
        <published>2009-05-23T14:46:26-07:00</published>
        <updated>2009-05-23T14:46:26-07:00</updated>
        <summary>I just finished my LayerOne talk. My slides are available here via Scribd. The demo code is also available via Subversion here.</summary>
        <author>
            <name>Don Ankney</name>
        </author>
        <category scheme="http://www.sixapart.com/ns/types#category" term="News" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Security" />
        <category scheme="http://www.sixapart.com/ns/types#category" term="Software" />
        
        
<content type="xhtml" xml:lang="en-us" xml:base="http://www.hackerco.de/hackercode/"><div xmlns="http://www.w3.org/1999/xhtml"><p>I just finished my LayerOne talk. My slides <a href="http://www.scribd.com/doc/15756215/Is-XSS-Solvable" target="_blank">are available here via Scribd</a>. The demo code is also <a href="http://svn.hackerco.de/xssspider/" target="_blank">available via Subversion here</a>.</p><xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/Hackercode/~4/wCDCLQkv6hU" height="1" width="1" /></div></content>


    <feedburner:origLink>http://www.hackerco.de/hackercode/2009/05/slides-from-layerone-are-up.html</feedburner:origLink></entry>
 
</feed><!-- ph=1 --><!-- nhm:dynamic-ssi -->
