<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Teaching users to get hacked, or why HTTP forms are bad for the web</title>
	<atom:link href="http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html</link>
	<description>Redfin Developers&#039; Blog</description>
	<lastBuildDate>Thu, 02 Feb 2012 17:56:54 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>By: dj smurfy d</title>
		<link>http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html/comment-page-1#comment-7003</link>
		<dc:creator>dj smurfy d</dc:creator>
		<pubDate>Fri, 10 Oct 2008 18:21:33 +0000</pubDate>
		<guid isPermaLink="false">http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html#comment-7003</guid>
		<description>Yes yes you are right. I did not explain myself completely, I have neglected to include the important step 3.

The caching of the file comes into play because the actual data that Mr. Evil will be able to see and change is the source code of our HTML files and any cached flash files.
(I&#039;ll expand on this below)

However the actual data he will see is the &quot;loader&quot; file and not the &quot;real&quot; file. Eg. the movie name parameter in the object tag we use is the name of the &quot;loader&quot; swf.
If Mr. Evil puts another value in that parameter to load his file, our &quot;real&quot; file will never get loaded. And his file would have to be an exact representation of our &quot;real&quot; file in order to fool our server and our users, this is nearly impossible because Mr. Evil does not even know the name of our &quot;real&quot; file let alone the code within it. (refer to my previous comment)

Now, the code within our &quot;real&quot; file, therefore, must be married to our HTML page.
So that if the code in the HTML is not what it is supposed to be or if the &quot;loader&quot; was never called
the user will see no flash data or be alerted of the change.

This is the most complex step three, which I must add does not work on every system.
Step three is simple to implement if all Mr.Evil tries to do is swap out the file he can see with one of his own.
 
Before I explain the third step let me talk about how Mr Evil can actually see our data.
(I&#039;m not well versed on how its actually changed)
(but now I will expand on what I said earlier)
In a packet sniffer when a flash file is called upon and given to the browser from the server the data is truncated and hard to understand but the active-x headers go with it and this is how Mr. Evil can know a flash is being transmitted. 
When using the non-cache methods (in my previous comment) the transfer of such a flash is even more truncated and in fact it does not resemble a standard cached flash passing threw at all.
So Mr. Evil would have to be one of the craftiest and smartest hackers in the world in order to see everything clearly from just looking at the packets...but lets assume he is that smart.

Now, if Mr. Evil passes his malicious swf where our &quot;real&quot; swf is being transmitted the marriage between the HTML and the flash will be broken because the code inside our &#039;real&#039; swf will no longer go out to the HTML page.
If he only changes out the &quot;loader&quot; swf
the HTML page can realize this.
(this is assuming Mr. Evil is not doing any real-time attacks although using xml sockets one can have a real-time relationship with the page)

If Mr. Evil changes the actual HTML source code.
He has complete control of our site anyway and there is no real defense against this except to stay away from simple looking flash files that are easy to recreate, and to use HTTPS.
Also against this one must rely on flashes that call upon other flashes,(my other comment)
if Mr. Evil changes the whole HTML code and loads his own swf, that &#039;evil&#039; 
swf will not be able to load subsequent files, because Mr. Evil does know the names of those files. He would have to create his own flash file system in order to fool our users. But he would not have our images or swfs to use in order to do this. (he would have to rely on screen captures or something else which is normally of far less quality than the originals) 


Alright let me just explain step three from easiest to hardest, theres no better way than just to explain the steps and I feel I&#039;m rambling on.


easy step three:
(doesn&#039;t guard against all possibilities eg. full HTML code takeover)
basic javascript flash swap guard:
(steps one and two are generally outlined in my previous comment)
now our &quot;loader&quot; file is the actual file
in our source HTML, in the object tag, 
so its url is for example myflash.swf,
however when it replaces itself with the &quot;real&quot;
swf the new url of the flashes root accessible by the DOM object will be the url used to load the &quot;real&quot; swf for example loader.php?other
(this url should not include the letters swf)
so with javascript we can setup a function to look for the root url of the flash which should not be
myflash.swf after the &quot;real&quot; flash has been loaded. (this function will need to be on a timeout to give the real swf a chance to load)

If Mr. Evil swaps out the &quot;loader&quot; swf for one of his own and that evil swf does not load our &quot;real&quot; swf,
(the call to loader?other can be seen and Mr. Evil can put this call in his evil swf, but by doing so 
it will replace his evil swf with our &quot;real&quot; one
making the attack useless)
the url of the root will be wrong and js can alert the user that the file seen is not the correct one.

To actually do this requires some crafty try catch statements in relation to the way each browser sees the flash object. And one must also use the most modern way to embed flash, which does not use the embed tag at all but rather includes the data parameter for non MSIE browsers.

The JS method used for this is TGetProperty(&quot;/&quot;, &#039;15&#039;)
(you must use a var that stands for 15)
this method has been around since flash 4.
More info can be found on Adobe.com, although the info is old and hard to find. Try searching for the old Macromedia notes &quot;flash calling methods from javascript.&quot;

As you can see &quot;easy&quot; step three is somewhat involved. To make the system more secure your &quot;real&quot; flash needs to also have a marriage with your server side code. I will not get into it now as i have typed alot already and I&#039;m refraining from writing any actual code here, but the tactics are similar to the js method.

All in all those reading this blog should come away with the fact that true security on the web means a constant HTTPS connection(period)

However using flash correctly can add some security in case you can&#039;t afford HTTPS (like most of us)

I hope I&#039;ve helped a bit.
Please note that some of these methods are brand new 2009 stuff.
What I&#039;ve coined as strict flash 0.0
and the pigindyserf method will be published on the web soon for all to learn in detail.</description>
		<content:encoded><![CDATA[<p>Yes yes you are right. I did not explain myself completely, I have neglected to include the important step 3.</p>
<p>The caching of the file comes into play because the actual data that Mr. Evil will be able to see and change is the source code of our HTML files and any cached flash files.<br />
(I&#8217;ll expand on this below)</p>
<p>However the actual data he will see is the &#8220;loader&#8221; file and not the &#8220;real&#8221; file. Eg. the movie name parameter in the object tag we use is the name of the &#8220;loader&#8221; swf.<br />
If Mr. Evil puts another value in that parameter to load his file, our &#8220;real&#8221; file will never get loaded. And his file would have to be an exact representation of our &#8220;real&#8221; file in order to fool our server and our users, this is nearly impossible because Mr. Evil does not even know the name of our &#8220;real&#8221; file let alone the code within it. (refer to my previous comment)</p>
<p>Now, the code within our &#8220;real&#8221; file, therefore, must be married to our HTML page.<br />
So that if the code in the HTML is not what it is supposed to be or if the &#8220;loader&#8221; was never called<br />
the user will see no flash data or be alerted of the change.</p>
<p>This is the most complex step three, which I must add does not work on every system.<br />
Step three is simple to implement if all Mr.Evil tries to do is swap out the file he can see with one of his own.</p>
<p>Before I explain the third step let me talk about how Mr Evil can actually see our data.<br />
(I&#8217;m not well versed on how its actually changed)<br />
(but now I will expand on what I said earlier)<br />
In a packet sniffer when a flash file is called upon and given to the browser from the server the data is truncated and hard to understand but the active-x headers go with it and this is how Mr. Evil can know a flash is being transmitted.<br />
When using the non-cache methods (in my previous comment) the transfer of such a flash is even more truncated and in fact it does not resemble a standard cached flash passing threw at all.<br />
So Mr. Evil would have to be one of the craftiest and smartest hackers in the world in order to see everything clearly from just looking at the packets&#8230;but lets assume he is that smart.</p>
<p>Now, if Mr. Evil passes his malicious swf where our &#8220;real&#8221; swf is being transmitted the marriage between the HTML and the flash will be broken because the code inside our &#8216;real&#8217; swf will no longer go out to the HTML page.<br />
If he only changes out the &#8220;loader&#8221; swf<br />
the HTML page can realize this.<br />
(this is assuming Mr. Evil is not doing any real-time attacks although using xml sockets one can have a real-time relationship with the page)</p>
<p>If Mr. Evil changes the actual HTML source code.<br />
He has complete control of our site anyway and there is no real defense against this except to stay away from simple looking flash files that are easy to recreate, and to use HTTPS.<br />
Also against this one must rely on flashes that call upon other flashes,(my other comment)<br />
if Mr. Evil changes the whole HTML code and loads his own swf, that &#8216;evil&#8217;<br />
swf will not be able to load subsequent files, because Mr. Evil does know the names of those files. He would have to create his own flash file system in order to fool our users. But he would not have our images or swfs to use in order to do this. (he would have to rely on screen captures or something else which is normally of far less quality than the originals) </p>
<p>Alright let me just explain step three from easiest to hardest, theres no better way than just to explain the steps and I feel I&#8217;m rambling on.</p>
<p>easy step three:<br />
(doesn&#8217;t guard against all possibilities eg. full HTML code takeover)<br />
basic javascript flash swap guard:<br />
(steps one and two are generally outlined in my previous comment)<br />
now our &#8220;loader&#8221; file is the actual file<br />
in our source HTML, in the object tag,<br />
so its url is for example myflash.swf,<br />
however when it replaces itself with the &#8220;real&#8221;<br />
swf the new url of the flashes root accessible by the DOM object will be the url used to load the &#8220;real&#8221; swf for example loader.php?other<br />
(this url should not include the letters swf)<br />
so with javascript we can setup a function to look for the root url of the flash which should not be<br />
myflash.swf after the &#8220;real&#8221; flash has been loaded. (this function will need to be on a timeout to give the real swf a chance to load)</p>
<p>If Mr. Evil swaps out the &#8220;loader&#8221; swf for one of his own and that evil swf does not load our &#8220;real&#8221; swf,<br />
(the call to loader?other can be seen and Mr. Evil can put this call in his evil swf, but by doing so<br />
it will replace his evil swf with our &#8220;real&#8221; one<br />
making the attack useless)<br />
the url of the root will be wrong and js can alert the user that the file seen is not the correct one.</p>
<p>To actually do this requires some crafty try catch statements in relation to the way each browser sees the flash object. And one must also use the most modern way to embed flash, which does not use the embed tag at all but rather includes the data parameter for non MSIE browsers.</p>
<p>The JS method used for this is TGetProperty(&#8220;/&#8221;, &#8217;15&#8242;)<br />
(you must use a var that stands for 15)<br />
this method has been around since flash 4.<br />
More info can be found on Adobe.com, although the info is old and hard to find. Try searching for the old Macromedia notes &#8220;flash calling methods from javascript.&#8221;</p>
<p>As you can see &#8220;easy&#8221; step three is somewhat involved. To make the system more secure your &#8220;real&#8221; flash needs to also have a marriage with your server side code. I will not get into it now as i have typed alot already and I&#8217;m refraining from writing any actual code here, but the tactics are similar to the js method.</p>
<p>All in all those reading this blog should come away with the fact that true security on the web means a constant HTTPS connection(period)</p>
<p>However using flash correctly can add some security in case you can&#8217;t afford HTTPS (like most of us)</p>
<p>I hope I&#8217;ve helped a bit.<br />
Please note that some of these methods are brand new 2009 stuff.<br />
What I&#8217;ve coined as strict flash 0.0<br />
and the pigindyserf method will be published on the web soon for all to learn in detail.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sasha</title>
		<link>http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html/comment-page-1#comment-6948</link>
		<dc:creator>Sasha</dc:creator>
		<pubDate>Wed, 08 Oct 2008 18:23:02 +0000</pubDate>
		<guid isPermaLink="false">http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html#comment-6948</guid>
		<description>@DJS David:

I&#039;m not sure I follow your comments completely, but I think that what you&#039;re describing won&#039;t protect from the kind of Man-In-The-Middle attack I&#039;m describing.

First off, the attack has nothing to do with the cacheability of the Flash file.  It has to do with the fact that Mr. Evil controls a router that is in between your browser and the server with the HTML page that is serving the Adgregate ad.

If that HTML page is served over HTTP, Mr. Evil&#039;s router can change the page&#039;s code completely *before it gets to your browser* and have the page load whatever Flash file Mr. Evil wants you to load.  That Flash file could be from adgregate.com, but it could just as easily be from www.evil.com or anywhere else, and the user will be none the wiser.  

I can&#039;t really see how changing Flash cacheability or keeping the Flash file name hidden would mitigate this sort of attack.  Can you help me out?</description>
		<content:encoded><![CDATA[<p>@DJS David:</p>
<p>I&#8217;m not sure I follow your comments completely, but I think that what you&#8217;re describing won&#8217;t protect from the kind of Man-In-The-Middle attack I&#8217;m describing.</p>
<p>First off, the attack has nothing to do with the cacheability of the Flash file.  It has to do with the fact that Mr. Evil controls a router that is in between your browser and the server with the HTML page that is serving the Adgregate ad.</p>
<p>If that HTML page is served over HTTP, Mr. Evil&#8217;s router can change the page&#8217;s code completely *before it gets to your browser* and have the page load whatever Flash file Mr. Evil wants you to load.  That Flash file could be from adgregate.com, but it could just as easily be from <a href="http://www.evil.com" rel="nofollow">http://www.evil.com</a> or anywhere else, and the user will be none the wiser.  </p>
<p>I can&#8217;t really see how changing Flash cacheability or keeping the Flash file name hidden would mitigate this sort of attack.  Can you help me out?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: databyte junky smurfy david</title>
		<link>http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html/comment-page-1#comment-6947</link>
		<dc:creator>databyte junky smurfy david</dc:creator>
		<pubDate>Wed, 08 Oct 2008 18:08:15 +0000</pubDate>
		<guid isPermaLink="false">http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html#comment-6947</guid>
		<description>It IS possible to make secure forms with flash.
this is in response to this quote:

&quot;If the host page is HTTP, then Mr. Evil can swap out Adgregate’s Flash ad for an ad that looks exactly like it but sends all of the info to Mr. Evil’s server, not to Adgregate. Users will be none the wiser until a laser death ray shows up on their MasterCard statement.&quot;


Now, the above quote is true because Adgregate&#039;s flash is cached, that is how Mr. Evil can get it and swap it out.

It is possible however, to hinder the cacheing of your flash files. 
This is done by calling that flash file via your favorite server code, and first giving no cache headers before printing out the binary flash data.

It is not possible to put a flash on an html page via any server code directly (although php as whats called ming that is heavily outdated) so you must use a &quot;loader&quot; or &quot;dummy&quot; flash to call out to the server via the loadvars class or loadclip class.
The &quot;loader&quot; flash replacing itself with the called flash file.
In this way the only file that gets cached is &quot;loader&quot; flash.
Now, its not good enough to have the file not be cached. The files name must also be effectively hidden from Mr. Evil.

To accomplish this the call to the server code that will print the &quot;real&quot; flash needs to be coded or encrypted. You can simply make the call to the server be like: loader.php?myfile.swf,
but inside loader.php myfile.swf really stands for
realfile.swf...of course there are code security issues one must deal with in regards to whatever server side code you use. And it would be wise to use some sort of encryption on both the fake and real filenames making it even harder for Mr. Evil.

My explanations are brief and do not cover every detail but I hope that you can draw a general idea of the methodology.

So using these two methods one can 1. Make a flash not cached by the browser (and therefore not decompiled by decompilers) 2. Keep the real name of the file hidden completely (from the browser and any sniffers)

A Flash form based on this system is far superior to the standard HTML based form.

To see an example of the no-cache methods being used to not cache images loaded by a swf you can visit www.achronicleofike.com</description>
		<content:encoded><![CDATA[<p>It IS possible to make secure forms with flash.<br />
this is in response to this quote:</p>
<p>&#8220;If the host page is HTTP, then Mr. Evil can swap out Adgregate’s Flash ad for an ad that looks exactly like it but sends all of the info to Mr. Evil’s server, not to Adgregate. Users will be none the wiser until a laser death ray shows up on their MasterCard statement.&#8221;</p>
<p>Now, the above quote is true because Adgregate&#8217;s flash is cached, that is how Mr. Evil can get it and swap it out.</p>
<p>It is possible however, to hinder the cacheing of your flash files.<br />
This is done by calling that flash file via your favorite server code, and first giving no cache headers before printing out the binary flash data.</p>
<p>It is not possible to put a flash on an html page via any server code directly (although php as whats called ming that is heavily outdated) so you must use a &#8220;loader&#8221; or &#8220;dummy&#8221; flash to call out to the server via the loadvars class or loadclip class.<br />
The &#8220;loader&#8221; flash replacing itself with the called flash file.<br />
In this way the only file that gets cached is &#8220;loader&#8221; flash.<br />
Now, its not good enough to have the file not be cached. The files name must also be effectively hidden from Mr. Evil.</p>
<p>To accomplish this the call to the server code that will print the &#8220;real&#8221; flash needs to be coded or encrypted. You can simply make the call to the server be like: loader.php?myfile.swf,<br />
but inside loader.php myfile.swf really stands for<br />
realfile.swf&#8230;of course there are code security issues one must deal with in regards to whatever server side code you use. And it would be wise to use some sort of encryption on both the fake and real filenames making it even harder for Mr. Evil.</p>
<p>My explanations are brief and do not cover every detail but I hope that you can draw a general idea of the methodology.</p>
<p>So using these two methods one can 1. Make a flash not cached by the browser (and therefore not decompiled by decompilers) 2. Keep the real name of the file hidden completely (from the browser and any sniffers)</p>
<p>A Flash form based on this system is far superior to the standard HTML based form.</p>
<p>To see an example of the no-cache methods being used to not cache images loaded by a swf you can visit <a href="http://www.achronicleofike.com" rel="nofollow">http://www.achronicleofike.com</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris</title>
		<link>http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html/comment-page-1#comment-6224</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Thu, 11 Sep 2008 22:38:35 +0000</pubDate>
		<guid isPermaLink="false">http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html#comment-6224</guid>
		<description>Sasha:  Only if they use a different cookie for that portion of the site. If they use the same cookie then it doesn&#039;t matter.</description>
		<content:encoded><![CDATA[<p>Sasha:  Only if they use a different cookie for that portion of the site. If they use the same cookie then it doesn&#8217;t matter.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sasha</title>
		<link>http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html/comment-page-1#comment-6205</link>
		<dc:creator>Sasha</dc:creator>
		<pubDate>Wed, 10 Sep 2008 23:20:16 +0000</pubDate>
		<guid isPermaLink="false">http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html#comment-6205</guid>
		<description>Chris,

I totally agree.  Many sites, like Amazon, allow access to parts of the account that they don&#039;t consider to be confidential (i.e. browsing history and &quot;you may be also interested in product X&quot; recommendations) over HTTP, while reserving HTTPS for all important information (usernames, passwords, CC#s, addresses, etc.).  I think this is a reasonable compromise.</description>
		<content:encoded><![CDATA[<p>Chris,</p>
<p>I totally agree.  Many sites, like Amazon, allow access to parts of the account that they don&#8217;t consider to be confidential (i.e. browsing history and &#8220;you may be also interested in product X&#8221; recommendations) over HTTP, while reserving HTTPS for all important information (usernames, passwords, CC#s, addresses, etc.).  I think this is a reasonable compromise.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris</title>
		<link>http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html/comment-page-1#comment-6195</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Wed, 10 Sep 2008 15:18:21 +0000</pubDate>
		<guid isPermaLink="false">http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html#comment-6195</guid>
		<description>This is a good post, but remember that hosting the form and supporting page over HTTPS does not completely mitigate the problem.  Most sites return the user a cookie after successfully validating the user&#039;s login credentials. This cookie will then be sent by the browser on any subsequent request.

Websites that use HTTPS exclusively for login and then HTTP for the rest of the site will still have the cookie being sent in the clear.  A MITM monitoring the network will simply wait for the user to login and then grab the session cookie.  Once the attacker has the cookie, they can use that within their own browser to interact with the site as the user.  The attacker will not have access to the username and password but will have complete access to the site as the victim user for the lifetime of the cookie.  Banking sites and other sites that value security are hosted entirely over HTTPS and mitigate this problem by setting the &quot;Secure&quot; flag on any cookie that is sent.  This flag causes the browser to only send the cookie over HTTPS and never in the clear.  

Active MITM attackers can also modify the HTTP page directly and insert malicious Javascript that would execute in the context of the site.  This Javascript enables the attacker to interact with the site as if they were the user.  See BEEF for an example of how sophisticated this form of Javascript attack can be.

HTTP should never be used for any site that wants some form of provable security.  HTTP provides no integrity or confidentiality guarantees and it is impossible for the browser to distinguish between interactions with an attacker and with the legitimate site.

For more information on proper session management and some of the pitfalls, read Chris Palmer&#039;s excellent whitepaper: http://www.isecpartners.com/files/web-session-management.pdf</description>
		<content:encoded><![CDATA[<p>This is a good post, but remember that hosting the form and supporting page over HTTPS does not completely mitigate the problem.  Most sites return the user a cookie after successfully validating the user&#8217;s login credentials. This cookie will then be sent by the browser on any subsequent request.</p>
<p>Websites that use HTTPS exclusively for login and then HTTP for the rest of the site will still have the cookie being sent in the clear.  A MITM monitoring the network will simply wait for the user to login and then grab the session cookie.  Once the attacker has the cookie, they can use that within their own browser to interact with the site as the user.  The attacker will not have access to the username and password but will have complete access to the site as the victim user for the lifetime of the cookie.  Banking sites and other sites that value security are hosted entirely over HTTPS and mitigate this problem by setting the &#8220;Secure&#8221; flag on any cookie that is sent.  This flag causes the browser to only send the cookie over HTTPS and never in the clear.  </p>
<p>Active MITM attackers can also modify the HTTP page directly and insert malicious Javascript that would execute in the context of the site.  This Javascript enables the attacker to interact with the site as if they were the user.  See BEEF for an example of how sophisticated this form of Javascript attack can be.</p>
<p>HTTP should never be used for any site that wants some form of provable security.  HTTP provides no integrity or confidentiality guarantees and it is impossible for the browser to distinguish between interactions with an attacker and with the legitimate site.</p>
<p>For more information on proper session management and some of the pitfalls, read Chris Palmer&#8217;s excellent whitepaper: <a href="http://www.isecpartners.com/files/web-session-management.pdf" rel="nofollow">http://www.isecpartners.com/files/web-session-management.pdf</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jason</title>
		<link>http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html/comment-page-1#comment-6182</link>
		<dc:creator>jason</dc:creator>
		<pubDate>Wed, 10 Sep 2008 01:57:38 +0000</pubDate>
		<guid isPermaLink="false">http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html#comment-6182</guid>
		<description>right. duh.
 
I think I successfully illustrated the point that these vectors are non-intuitive for your average web dev.</description>
		<content:encoded><![CDATA[<p>right. duh.</p>
<p>I think I successfully illustrated the point that these vectors are non-intuitive for your average web dev.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sasha</title>
		<link>http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html/comment-page-1#comment-6180</link>
		<dc:creator>Sasha</dc:creator>
		<pubDate>Wed, 10 Sep 2008 01:40:08 +0000</pubDate>
		<guid isPermaLink="false">http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html#comment-6180</guid>
		<description>@Jason:

While it&#039;s true that the Flash could be served up over HTTPS, that doesn&#039;t matter because Mr. Evil can change the HTTP page that includes the Flash to pull the Flash from anywhere he wants, including Mr. Evil&#039;s website.  

The problem is still not solved because the Flash control&#039;s *hosting page* is not secure.

Cheers,
Sasha.</description>
		<content:encoded><![CDATA[<p>@Jason:</p>
<p>While it&#8217;s true that the Flash could be served up over HTTPS, that doesn&#8217;t matter because Mr. Evil can change the HTTP page that includes the Flash to pull the Flash from anywhere he wants, including Mr. Evil&#8217;s website.  </p>
<p>The problem is still not solved because the Flash control&#8217;s *hosting page* is not secure.</p>
<p>Cheers,<br />
Sasha.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jason</title>
		<link>http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html/comment-page-1#comment-6178</link>
		<dc:creator>jason</dc:creator>
		<pubDate>Wed, 10 Sep 2008 01:22:01 +0000</pubDate>
		<guid isPermaLink="false">http://blog.redfin.com/devblog/2008/09/teaching_users_to_get_hacked_or_why_http_forms_are_bad_for_the_web.html#comment-6178</guid>
		<description>Based on the examples on their marketing page, if they&#039;ve solved it, they&#039;ve done so by avoiding the problem. Their ad forms are all flash widgets, and those are served up over https.

In theory, since flash is sandboxed, it doesn&#039;t matter what&#039;s going on in the surrounding page. I wonder if the same principle holds for iframes.</description>
		<content:encoded><![CDATA[<p>Based on the examples on their marketing page, if they&#8217;ve solved it, they&#8217;ve done so by avoiding the problem. Their ad forms are all flash widgets, and those are served up over https.</p>
<p>In theory, since flash is sandboxed, it doesn&#8217;t matter what&#8217;s going on in the surrounding page. I wonder if the same principle holds for iframes.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

