<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.0.5" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Same-Origin Policy Part 2: Server-Provided Policies?</title>
	<link>http://taossa.com/index.php/2007/02/17/same-origin-proposal/</link>
	<description>Continued ramblings on software security and code auditing</description>
	<pubDate>Fri, 30 Jul 2010 13:32:45 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.5</generator>

	<item>
		<title>by: justin</title>
		<link>http://taossa.com/index.php/2007/02/17/same-origin-proposal/#comment-6281</link>
		<pubDate>Thu, 18 Oct 2007 05:28:00 +0000</pubDate>
		<guid>http://taossa.com/index.php/2007/02/17/same-origin-proposal/#comment-6281</guid>
					<description>fschmidt,

I suppose I reversed your suggestion, but the opposite still sounds very suspect to me. I admit that a cursory glance doesn&#8217;t reveal such an obvious vulnerability as the reverse case, but your approach does nothing to improve security and would actually introduce the potential for entirely new classes of vulnerabilities.

From a practical standpoint, my first question is how you&#8217;d actually register the cross-origin exception? You can&#8217;t include the script directly, because it would execute in the context of the requesting origin. So, I would think that one site would need to have a frame executing the exception script on the other site. That seems like a very circuitous route, and the beginning of an administrative and auditing nightmare.

Given the current prevalence of trivial web vulnerabilities, consider how much worse things would get if developers could scatter origin exceptions throughout their code. Imagine trying to identify origin bypasses in a moderate-size application when they&#8217;re embedded in JavaScript spread out across all the code in a site. I just can&#8217;t see how a situation like this would ever be preferable to a policy file that&#8217;s easy to identify and audit.

Also, how long should the exception be valid? This is something that&#8217;s easy to specify in a policy file, but how would you handle it in your approach? Would you add a DOM properties or is it just valid for the duration of the browsing session? And how does a site refresh a bad exception when it&#8217;s explicitly initiated by the foreign origin? With these policy exceptions spread out it seems like stale and/or overly-permissive exceptions would become a prime target of attack.

Finally, I&#8217;m not comfortable with the all-or-nothing approach of opening one site to requests from another site. It effectively means accepting the entire attack surface of a remote site as your own. In the case of public, general-use widgets, that&#8217;s basically the entire Internet.

Now, on to your question about my origin policy ramblings. The first thing to consider is that not all XSS vulnerabilities are quite so straight-forward. There are often limits on the injected text size, location, and format. (Hence the value of things like the XSS cheat-sheet.) So, adding restrictions on external includes and navigation could often make an exploit impractical. 

More generally, however, the policy I proposed could white-list any requests to other origins, even user initiated clicks. Such a strict approach is probably not practical for all sites, but it would be a good idea for something like a banking application (and I&#8217;ve looked at enough of those to consider it a feasible solution in such cases).</description>
		<content:encoded><![CDATA[<p>fschmidt,</p>
<p>I suppose I reversed your suggestion, but the opposite still sounds very suspect to me. I admit that a cursory glance doesn&#8217;t reveal such an obvious vulnerability as the reverse case, but your approach does nothing to improve security and would actually introduce the potential for entirely new classes of vulnerabilities.</p>
<p>From a practical standpoint, my first question is how you&#8217;d actually register the cross-origin exception? You can&#8217;t include the script directly, because it would execute in the context of the requesting origin. So, I would think that one site would need to have a frame executing the exception script on the other site. That seems like a very circuitous route, and the beginning of an administrative and auditing nightmare.</p>
<p>Given the current prevalence of trivial web vulnerabilities, consider how much worse things would get if developers could scatter origin exceptions throughout their code. Imagine trying to identify origin bypasses in a moderate-size application when they&#8217;re embedded in JavaScript spread out across all the code in a site. I just can&#8217;t see how a situation like this would ever be preferable to a policy file that&#8217;s easy to identify and audit.</p>
<p>Also, how long should the exception be valid? This is something that&#8217;s easy to specify in a policy file, but how would you handle it in your approach? Would you add a DOM properties or is it just valid for the duration of the browsing session? And how does a site refresh a bad exception when it&#8217;s explicitly initiated by the foreign origin? With these policy exceptions spread out it seems like stale and/or overly-permissive exceptions would become a prime target of attack.</p>
<p>Finally, I&#8217;m not comfortable with the all-or-nothing approach of opening one site to requests from another site. It effectively means accepting the entire attack surface of a remote site as your own. In the case of public, general-use widgets, that&#8217;s basically the entire Internet.</p>
<p>Now, on to your question about my origin policy ramblings. The first thing to consider is that not all XSS vulnerabilities are quite so straight-forward. There are often limits on the injected text size, location, and format. (Hence the value of things like the XSS cheat-sheet.) So, adding restrictions on external includes and navigation could often make an exploit impractical. </p>
<p>More generally, however, the policy I proposed could white-list any requests to other origins, even user initiated clicks. Such a strict approach is probably not practical for all sites, but it would be a good idea for something like a banking application (and I&#8217;ve looked at enough of those to consider it a feasible solution in such cases).
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: fschmidt</title>
		<link>http://taossa.com/index.php/2007/02/17/same-origin-proposal/#comment-6273</link>
		<pubDate>Thu, 18 Oct 2007 00:25:00 +0000</pubDate>
		<guid>http://taossa.com/index.php/2007/02/17/same-origin-proposal/#comment-6273</guid>
					<description>&#8220;For example, a script on evil.com could add myFinancialInstitution.com to document.domain, then script out a funds transfer to some offshore account.&#8221;

What I suggested was that if evil.com added myFinancialInstitution.com to document.domain, then myFinancialInstitution.com should have access to evil.com, but not the other way, meaning evil.com should not have access to myFinancialInstitution.com .  Does this cause any security problem?

Also, about your server-defined, browser-enforced security policy idea, I see how limiting inbound requests can prevent cross-site request forgery.  But limiting outbound requests doesn&#8217;t really prevent cross-site scripting because injected JavaScript can simply change links on the page to go to a URL at evil.com with whatever info it wants to smuggle out included in the URL, so that when the user clicks on a link, evil.com gets the info.</description>
		<content:encoded><![CDATA[<p>&#8220;For example, a script on evil.com could add myFinancialInstitution.com to document.domain, then script out a funds transfer to some offshore account.&#8221;</p>
<p>What I suggested was that if evil.com added myFinancialInstitution.com to document.domain, then myFinancialInstitution.com should have access to evil.com, but not the other way, meaning evil.com should not have access to myFinancialInstitution.com .  Does this cause any security problem?</p>
<p>Also, about your server-defined, browser-enforced security policy idea, I see how limiting inbound requests can prevent cross-site request forgery.  But limiting outbound requests doesn&#8217;t really prevent cross-site scripting because injected JavaScript can simply change links on the page to go to a URL at evil.com with whatever info it wants to smuggle out included in the URL, so that when the user clicks on a link, evil.com gets the info.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: justin</title>
		<link>http://taossa.com/index.php/2007/02/17/same-origin-proposal/#comment-6221</link>
		<pubDate>Wed, 17 Oct 2007 07:00:00 +0000</pubDate>
		<guid>http://taossa.com/index.php/2007/02/17/same-origin-proposal/#comment-6221</guid>
					<description>fschmidt,  See, that&#8217;s the tricky thing about security&#8230; you have to consider &lt;em&gt;all &lt;/em&gt;the consequences of a decision. You&#8217;re suggesting that a script be allowed to dynamically add new valid origins. This might seem like a straight-forward solution, but it would result in unpreventable cross-site request forgeries.  

To illustrate, let&#8217;s walk through a hypothetical scenario. Assume that I browse to evil.com with the current same origin policy. Now, there are ways that evil.com can interact with other sites, such as including scripts, stylesheets, or images. However, scripts on evil.com are limited in how they can interact with this data; they can&#8217;t make HTTP posts; and included stylesheets and scripts must be properly formatted. Also, any script retrieved from another location is executed in the context of the requesting origin, not the serving location. So, it&#8217;s possible to get code in and data exfiltrated through URLs, but interaction with other sites is still fairly limited.  

Now let&#8217;s consider the same scenario with your suggestion, where scripts on evil.com can add domains as valid origins. For example, a script on evil.com could add myFinancialInstitution.com to document.domain, then script out a funds transfer to some offshore account. Assuming I&#8217;m currently logged in to myFinancialInstitution.com, my session cookie would be passed and the transfer would succeed. And speaking of cookies, this scenario would expose all cookies for reading and writing by any arbitrary site. One could imagine a malicious script that enumerates through a list of sensitive domains, checks for active session cookies, then attempts to perform some illicit activity.  

In case the dangers of this proposal are still unclear, I suggest rereading the original same-origin post at &lt;a href="http://taossa.com/index.php/2007/02/08/same-origin-policy/" rel="nofollow"&gt;http://taossa.com/index.php/2007/02/08/same-origin-policy/&lt;/a&gt; . Really though, I think your response only further emphasizes why a good origin policy needs to separate the code from the policy itself. With the current same-origin policy, a single vulnerability undermines the security of an entire site. By isolating the policy, sites can provide some mitigation against such vulnerabilities.

Anyway, it&#8217;s always good to see developers curious about security, and hopefully you find the information helpful.</description>
		<content:encoded><![CDATA[<p>fschmidt,  See, that&#8217;s the tricky thing about security&#8230; you have to consider <em>all </em>the consequences of a decision. You&#8217;re suggesting that a script be allowed to dynamically add new valid origins. This might seem like a straight-forward solution, but it would result in unpreventable cross-site request forgeries.  </p>
<p>To illustrate, let&#8217;s walk through a hypothetical scenario. Assume that I browse to evil.com with the current same origin policy. Now, there are ways that evil.com can interact with other sites, such as including scripts, stylesheets, or images. However, scripts on evil.com are limited in how they can interact with this data; they can&#8217;t make HTTP posts; and included stylesheets and scripts must be properly formatted. Also, any script retrieved from another location is executed in the context of the requesting origin, not the serving location. So, it&#8217;s possible to get code in and data exfiltrated through URLs, but interaction with other sites is still fairly limited.  </p>
<p>Now let&#8217;s consider the same scenario with your suggestion, where scripts on evil.com can add domains as valid origins. For example, a script on evil.com could add myFinancialInstitution.com to document.domain, then script out a funds transfer to some offshore account. Assuming I&#8217;m currently logged in to myFinancialInstitution.com, my session cookie would be passed and the transfer would succeed. And speaking of cookies, this scenario would expose all cookies for reading and writing by any arbitrary site. One could imagine a malicious script that enumerates through a list of sensitive domains, checks for active session cookies, then attempts to perform some illicit activity.  </p>
<p>In case the dangers of this proposal are still unclear, I suggest rereading the original same-origin post at <a href="http://taossa.com/index.php/2007/02/08/same-origin-policy/" rel="nofollow">http://taossa.com/index.php/2007/02/08/same-origin-policy/</a> . Really though, I think your response only further emphasizes why a good origin policy needs to separate the code from the policy itself. With the current same-origin policy, a single vulnerability undermines the security of an entire site. By isolating the policy, sites can provide some mitigation against such vulnerabilities.</p>
<p>Anyway, it&#8217;s always good to see developers curious about security, and hopefully you find the information helpful.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: fschmidt</title>
		<link>http://taossa.com/index.php/2007/02/17/same-origin-proposal/#comment-6196</link>
		<pubDate>Tue, 16 Oct 2007 19:04:00 +0000</pubDate>
		<guid>http://taossa.com/index.php/2007/02/17/same-origin-proposal/#comment-6196</guid>
					<description>This silly commenting system doesn&#8217;t allow edits, so please use this instead of my last post.

&#8220;Worse yet, the rise of AJAX and mash-ups seems to have turned same-origin into something developers are trying to break.&#8221;

I am a programmer, not a security guy.  I see same-origin mostly as a huge nuisance to be gotten around.  And using a policy file, as suggested here, doesn&#8217;t solve the problem because programmers providing widgets to be added to other people&#8217;s web pages can&#8217;t expect those people to go through the trouble of modifying a policy file.

For this issue to be resolved, security people have to recognize that once JavaScript is injected into a page, the creator of that JavaScript has full control over that page and all security attempts to restrict that JavaScript are pointless.  Any restrictions on what JavaScript can access from within a web page can be gotten around by having that JavaScript go through a server to get access.  So limiting XmlHttpRequest with the same-origin policy makes no sense at all because JavaScript can always add a &#8220;script&#8221; element to the DOM to load another JavaScript file from a server which can itself load whatever XmlHttpRequest would have loaded and then pass it back in a JavaScript file.  Similarly, if JavaScript loaded from xyz.com into some page in another domain wants to communicate with a frame loaded from from xyz.com, then it can do so through the server.  The fact that one can work around these restrictions means that the security value of these restrictions is zero.  But the nuisance value and the performance hit is big enough to make these restrictions a big negative for web development.

The sensible solution is to allow document.domain to be an unrestricted list of domains.  So I should be able to say:

	document.domain += &#8220;,xyz.com&#8221;;

And then JavaScript in pages from xyz.com should have access to this page just as other pages in the same origin do.  And the same-origin restriction on XmlHttpRequest should simply be dropped.  This solution recognizes the fact that it is hopeless to try to restrict JavaScript that has made it into a page.  And given this, it makes sense to make things easy for JavaScript and HTML widget programmers.</description>
		<content:encoded><![CDATA[<p>This silly commenting system doesn&#8217;t allow edits, so please use this instead of my last post.</p>
<p>&#8220;Worse yet, the rise of AJAX and mash-ups seems to have turned same-origin into something developers are trying to break.&#8221;</p>
<p>I am a programmer, not a security guy.  I see same-origin mostly as a huge nuisance to be gotten around.  And using a policy file, as suggested here, doesn&#8217;t solve the problem because programmers providing widgets to be added to other people&#8217;s web pages can&#8217;t expect those people to go through the trouble of modifying a policy file.</p>
<p>For this issue to be resolved, security people have to recognize that once JavaScript is injected into a page, the creator of that JavaScript has full control over that page and all security attempts to restrict that JavaScript are pointless.  Any restrictions on what JavaScript can access from within a web page can be gotten around by having that JavaScript go through a server to get access.  So limiting XmlHttpRequest with the same-origin policy makes no sense at all because JavaScript can always add a &#8220;script&#8221; element to the DOM to load another JavaScript file from a server which can itself load whatever XmlHttpRequest would have loaded and then pass it back in a JavaScript file.  Similarly, if JavaScript loaded from xyz.com into some page in another domain wants to communicate with a frame loaded from from xyz.com, then it can do so through the server.  The fact that one can work around these restrictions means that the security value of these restrictions is zero.  But the nuisance value and the performance hit is big enough to make these restrictions a big negative for web development.</p>
<p>The sensible solution is to allow document.domain to be an unrestricted list of domains.  So I should be able to say:</p>
<p>	document.domain += &#8220;,xyz.com&#8221;;</p>
<p>And then JavaScript in pages from xyz.com should have access to this page just as other pages in the same origin do.  And the same-origin restriction on XmlHttpRequest should simply be dropped.  This solution recognizes the fact that it is hopeless to try to restrict JavaScript that has made it into a page.  And given this, it makes sense to make things easy for JavaScript and HTML widget programmers.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: justin</title>
		<link>http://taossa.com/index.php/2007/02/17/same-origin-proposal/#comment-108</link>
		<pubDate>Sun, 18 Feb 2007 03:45:00 +0000</pubDate>
		<guid>http://taossa.com/index.php/2007/02/17/same-origin-proposal/#comment-108</guid>
					<description>ntp,

First off, no one has to apologize for long posts here.  We&#8217;re not exactly known for our brevity (ahem&#8230; John). Anyway, you added a lot of interesting points, so I figured I&#8217;d respond in order.

1) I&#8217;m still trying to decide on content restrictions. My first take is that they&#8217;re integrated into the page and they feel a bit too complex, which worries me a bit, but I can&#8217;t frame it as more than that yet. More concretely, content restrictions don&#8217;t prevent CSRF attacks (http://ha.ckers.org/blog/20060626/content-restrictions-and-script-keys/), which would be addressed in my suggested policy. They also don&#8217;t provide as fine-grained control over loosening origin restrictions. That said, I see the potential and am still mulling over the concept. In particular, content restrictions seem more appropriate than my suggestion for intra-site activity, so perhaps the right idea is a combination of the two?

2) It looks like we&#8217;re both on the same page with cryptographic validation. Originator validation can be very handy and at this point there&#8217;s little reason not to do it.

3) Your protection solution certainly guarantees same-origin sandboxing, and works with existing browsers. (Oddly enough, I&#8217;ve been using MOZ_NO_REMOTE=1 with multiple profiles to make cross-session exploit testing easier.) I&#8217;m adding your approach to my list and will be covering it in a future discussion. However, I doubt it&#8217;s a long-term solution because it&#8217;s just not reasonable for the average user. Also, it doesn&#8217;t address the need to allow cross-site communication where appropriate. I was targeting my proposal at a balance between security and functionality. In my experience developers want their jobs easy and most users want it even easier, but I might have missed my mark.

4) Yeah, I pretty much agree on all points here.

5) You and I seem to be in the same camp here. I&#8217;m really bothered by the &#8220;throw a device in front of everything&#8221; mentality. TCP/IP firewalls work because the rules are relatively simple, which is possible because they don&#8217;t dig into the application layer. I expect WAFs to never work very well because they&#8217;re the exact opposite of TCP/IP firewalls; WAFs seem intent on trying to duplicate the application logic in the firewall. That&#8217;s a role better served by a programming framework. 

I hope I didn&#8217;t come across like I was suggesting embedding a WAF in the browser. I was intentionally trying to keep the ruleset simple, and not try to dig into the application logic. In the end I think it comes down to encouraging a server-side function segmentation and letting the originator provide more fine-grained control over the restrictions enforced by the existing same-origin policy.

6) You&#8217;re totally right that proper input handling can address XSS, and that&#8217;s always the right approach. I just figure an extra measure of policy at the browser can help mitigate client-targeted vulnerabilities that slip through the cracks.</description>
		<content:encoded><![CDATA[<p>ntp,</p>
<p>First off, no one has to apologize for long posts here.  We&#8217;re not exactly known for our brevity (ahem&#8230; John). Anyway, you added a lot of interesting points, so I figured I&#8217;d respond in order.</p>
<p>1) I&#8217;m still trying to decide on content restrictions. My first take is that they&#8217;re integrated into the page and they feel a bit too complex, which worries me a bit, but I can&#8217;t frame it as more than that yet. More concretely, content restrictions don&#8217;t prevent CSRF attacks (http://ha.ckers.org/blog/20060626/content-restrictions-and-script-keys/), which would be addressed in my suggested policy. They also don&#8217;t provide as fine-grained control over loosening origin restrictions. That said, I see the potential and am still mulling over the concept. In particular, content restrictions seem more appropriate than my suggestion for intra-site activity, so perhaps the right idea is a combination of the two?</p>
<p>2) It looks like we&#8217;re both on the same page with cryptographic validation. Originator validation can be very handy and at this point there&#8217;s little reason not to do it.</p>
<p>3) Your protection solution certainly guarantees same-origin sandboxing, and works with existing browsers. (Oddly enough, I&#8217;ve been using MOZ_NO_REMOTE=1 with multiple profiles to make cross-session exploit testing easier.) I&#8217;m adding your approach to my list and will be covering it in a future discussion. However, I doubt it&#8217;s a long-term solution because it&#8217;s just not reasonable for the average user. Also, it doesn&#8217;t address the need to allow cross-site communication where appropriate. I was targeting my proposal at a balance between security and functionality. In my experience developers want their jobs easy and most users want it even easier, but I might have missed my mark.</p>
<p>4) Yeah, I pretty much agree on all points here.</p>
<p>5) You and I seem to be in the same camp here. I&#8217;m really bothered by the &#8220;throw a device in front of everything&#8221; mentality. TCP/IP firewalls work because the rules are relatively simple, which is possible because they don&#8217;t dig into the application layer. I expect WAFs to never work very well because they&#8217;re the exact opposite of TCP/IP firewalls; WAFs seem intent on trying to duplicate the application logic in the firewall. That&#8217;s a role better served by a programming framework. </p>
<p>I hope I didn&#8217;t come across like I was suggesting embedding a WAF in the browser. I was intentionally trying to keep the ruleset simple, and not try to dig into the application logic. In the end I think it comes down to encouraging a server-side function segmentation and letting the originator provide more fine-grained control over the restrictions enforced by the existing same-origin policy.</p>
<p>6) You&#8217;re totally right that proper input handling can address XSS, and that&#8217;s always the right approach. I just figure an extra measure of policy at the browser can help mitigate client-targeted vulnerabilities that slip through the cracks.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: ntp</title>
		<link>http://taossa.com/index.php/2007/02/17/same-origin-proposal/#comment-105</link>
		<pubDate>Sun, 18 Feb 2007 00:46:00 +0000</pubDate>
		<guid>http://taossa.com/index.php/2007/02/17/same-origin-proposal/#comment-105</guid>
					<description>NOTE: I apologize for this long post in advance.  Here goes.

1) Both content-restrictions and httpOnly could be extensions to browsers.  I don&#8217;t see your technique as strong over content-restrictions.  httpOnly, however, has problems.

2) SSL Certs do NOT cost $20 (or even NameCheap&#8217;s $16).  &lt;a href="http://WWW.StartCom.ORG" rel="nofollow"&gt;WWW.StartCom.ORG&lt;/a&gt; has certs available for free.  The catch?  The certificate for their CA is only default in Mozilla products (including Firefox) and KDE&#8217;s Konquerer.  CAcert.ORG may also get included in Mozilla&#8217;s products and it is also free.  It is my opinion that IE7 should immediate include both as well&#8230; and developers should start signing applications, containers, objects, and everything that they possibly can in order to proactively prevent many current and future web application security threats.

3) I came up with a protection solution here:&lt;a href="http://sla.ckers.org/forum/read.php?13,6918,7005" rel="nofollow"&gt;http://sla.ckers.org/forum/read.php?13,6918,7005&lt;/a&gt;

This solution only currently works in Firefox, and it can be implemented either as:

a) How you use your web browser

b) How browsers are implemented

This is probably the strongest protection methodology currently available for users.  I use it myself.

I&#8217;m using it right now.  Firefox is open in this window to a totally locked down install (I&#8217;m even using Public Fox to lock down my settings with a password).  A few other Firefox instances are open, but they have totally different profiles and they are running as different processes.  This Firefox had a deny any policy on its NoScript plugin when started.  I had to add access for this site to post this, so I temporarily allowed scripts only to &lt;a href="http://taossa.com." rel="nofollow"&gt;http://taossa.com.&lt;/a&gt;  I&#8217;m going to close this window and end this instance / Firefox process when I am done, clearing all private data.

4) While my method does seem to prevent many current and future threats, especially threats that exploit trust relationships in the same-origin policy - I can see two other protections getting into browsers quickly and easily.

a) You already mentioned one:&lt;a href="http://myappsecurity.blogspot.com/2007/01/xss-filter-to-protect-from-xss-attacks.html" rel="nofollow"&gt;http://myappsecurity.blogspot.com/2007/01/xss-filter-to-protect-from-xss-attacks.html&lt;/a&gt;

b) RSnake is also working with the .NET-Fw Anti-XSS Microsoft guys to have their own XSS filters put into IE7:&lt;a href="http://ha.ckers.org/blog/20070119/microsoft-engineers-are-paying-attention/" rel="nofollow"&gt;http://ha.ckers.org/blog/20070119/microsoft-engineers-are-paying-attention/&lt;/a&gt;

I believe that each has their own immediate problems:

A) they don&#8217;t solve any same-origin policy trust issues directly

B) they work only as a protection against XSS

C) same problems as WAF&#8217;s below

5) Should I even mention WAF&#8217;s?  Do we really want to put mod-security in browsers, Linksys routers, and in front of every web server in the world?  The problem with Web application firewalls is two-fold:

a) They would need to be updated to support new threats

b) There is always going to be a way to sneak past their filters

6) Input validation can fix every XSS vulnerability in every application.</description>
		<content:encoded><![CDATA[<p>NOTE: I apologize for this long post in advance.  Here goes.</p>
<p>1) Both content-restrictions and httpOnly could be extensions to browsers.  I don&#8217;t see your technique as strong over content-restrictions.  httpOnly, however, has problems.</p>
<p>2) SSL Certs do NOT cost $20 (or even NameCheap&#8217;s $16).  <a href="http://WWW.StartCom.ORG" rel="nofollow" onclick="javascript:urchinTracker ('/outbound/WWW.StartCom.ORG');">WWW.StartCom.ORG</a> has certs available for free.  The catch?  The certificate for their CA is only default in Mozilla products (including Firefox) and KDE&#8217;s Konquerer.  CAcert.ORG may also get included in Mozilla&#8217;s products and it is also free.  It is my opinion that IE7 should immediate include both as well&#8230; and developers should start signing applications, containers, objects, and everything that they possibly can in order to proactively prevent many current and future web application security threats.</p>
<p>3) I came up with a protection solution here:<a href="http://sla.ckers.org/forum/read.php?13,6918,7005" rel="nofollow" onclick="javascript:urchinTracker ('/outbound/sla.ckers.org');">http://sla.ckers.org/forum/read.php?13,6918,7005</a></p>
<p>This solution only currently works in Firefox, and it can be implemented either as:</p>
<p>a) How you use your web browser</p>
<p>b) How browsers are implemented</p>
<p>This is probably the strongest protection methodology currently available for users.  I use it myself.</p>
<p>I&#8217;m using it right now.  Firefox is open in this window to a totally locked down install (I&#8217;m even using Public Fox to lock down my settings with a password).  A few other Firefox instances are open, but they have totally different profiles and they are running as different processes.  This Firefox had a deny any policy on its NoScript plugin when started.  I had to add access for this site to post this, so I temporarily allowed scripts only to <a href="http://taossa.com." rel="nofollow" onclick="javascript:urchinTracker ('/outbound/taossa.com.');">http://taossa.com.</a>  I&#8217;m going to close this window and end this instance / Firefox process when I am done, clearing all private data.</p>
<p>4) While my method does seem to prevent many current and future threats, especially threats that exploit trust relationships in the same-origin policy - I can see two other protections getting into browsers quickly and easily.</p>
<p>a) You already mentioned one:<a href="http://myappsecurity.blogspot.com/2007/01/xss-filter-to-protect-from-xss-attacks.html" rel="nofollow" onclick="javascript:urchinTracker ('/outbound/myappsecurity.blogspot.com');">http://myappsecurity.blogspot.com/2007/01/xss-filter-to-protect-from-xss-attacks.html</a></p>
<p>b) RSnake is also working with the .NET-Fw Anti-XSS Microsoft guys to have their own XSS filters put into IE7:<a href="http://ha.ckers.org/blog/20070119/microsoft-engineers-are-paying-attention/" rel="nofollow" onclick="javascript:urchinTracker ('/outbound/ha.ckers.org');">http://ha.ckers.org/blog/20070119/microsoft-engineers-are-paying-attention/</a></p>
<p>I believe that each has their own immediate problems:</p>
<p>A) they don&#8217;t solve any same-origin policy trust issues directly</p>
<p>B) they work only as a protection against XSS</p>
<p>C) same problems as WAF&#8217;s below</p>
<p>5) Should I even mention WAF&#8217;s?  Do we really want to put mod-security in browsers, Linksys routers, and in front of every web server in the world?  The problem with Web application firewalls is two-fold:</p>
<p>a) They would need to be updated to support new threats</p>
<p>b) There is always going to be a way to sneak past their filters</p>
<p>6) Input validation can fix every XSS vulnerability in every application.
</p>
]]></content:encoded>
				</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.077 seconds -->
