<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jake Kasprzak Online &#187; Firefox</title>
	<atom:link href="http://jake.kasprzak.ca/category/firefox/feed/" rel="self" type="application/rss+xml" />
	<link>http://jake.kasprzak.ca</link>
	<description>Software > Open Source Development > Mozilla > Firefox > Greasemonkey > Scripting/Coding</description>
	<lastBuildDate>Sat, 13 Aug 2011 00:07:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Benchmarking of JavaScript Performance: Firefox 3.5 vs. Google Chrome 3.0</title>
		<link>http://jake.kasprzak.ca/2009/11/16/benchmarking-of-javascript-performance-firefox-3-5-vs-google-chrome-3-0/</link>
		<comments>http://jake.kasprzak.ca/2009/11/16/benchmarking-of-javascript-performance-firefox-3-5-vs-google-chrome-3-0/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 03:53:55 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google Chrome]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=777</guid>
		<description><![CDATA[Many web pages and web applications rely on JavaScript. That is the reason JavaScript performance in web browsers tends to be considered a high priority by browser vendors. There may be other factors that affect browser performance, as browsers are not simply JavaScript engines. This was mentioned by a senior product manager on the Internet [...]]]></description>
			<content:encoded><![CDATA[<p>Many web pages and web applications rely on JavaScript. That is the reason JavaScript performance in web browsers tends to be considered a high priority by browser vendors. There may be other factors that affect browser performance, as browsers are not simply JavaScript engines. This was mentioned by a senior product manager on the Internet Explorer development team, as you can see in <a href="http://www.computerworld.com/s/article/9126940/IE8_RC1_gains_ground_in_JavaScript_race?taxonomyId=11">this Computerworld article in which the results of JavaScript benchmark tests on different web browsers are mentioned</a>. However, in that same article, it is said that Internet Explorer 8 Release Candidate 1 completed those same JavaScript benchmark tests four times faster than IE8 Beta 2 did. This seems to indicate that those working on Internet Explorer do consider JavaScript performance important. Since browser vendors consider JavaScript performance important, it is important that browsers do well on these benchmark tests. </p>
<p>There are three major JavaScript performance test suites, each of which were released by different browser vendors. Webkit released <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html">SunSpider</a>, Mozilla released <a href="http://dromaeo.com/">Dromaeo</a>, and Google released the <a href="http://v8.googlecode.com/svn/data/benchmarks/v5/run.html">V8 benchmark</a>. As is often the case with benchmark tests, they may not necessarily accurately determine what performs best in the actual situations that they try to simulate. These JavaScript benchmark tests may have their flaws, some of which are still being addressed. Despite the flaws that JavaScript benchmarks may have, they can give an indication of how some JavaScript engines can be better than others. In the Computerworld article previously mentioned here, the SunSpider test suite was used to test the performance of the JavaScript engines of different browsers.</p>
<p>After I wrote about Google Chrome in the last entry here, I wanted to more precisely determine how much better it is at JavaScript performance than other browsers are. I considered running a few benchmark tests on a few different browsers. However, that has already been done many times by others. One can view results of such tests in the Computerworld article to which I previously posted a link, and <a href="http://ejohn.org/blog/javascript-performance-rundown/">here</a>. However, those tests were run before Firefox 3.5 was released, and JavaScript performance in Firefox 3.0 is not as good as it is in Firefox 3.5. In fact, according to what is on <a href="http://www.mozilla.com/en-US/firefox/performance/">this page on Firefox performance</a>, SunSpider tests indicate that JavaScript performance in Firefox 3.5 is twice as good as JavaScript performance in Firefox 3.0. I also wanted to run these tests myself. I ran the SunSpider benchmark tests using Firefox and Chrome, and found that the benchmark tests ran much faster in Chrome than they did in Firefox.</p>
<p>The SunSpider test suite is a comprehensive one that simulates situations that users will encounter when they browse the web, such as generation of tag clouds from JSON input. In running these tests, I ensured that I was using the latest versions of these web browsers. I also ensured that no other browser tabs were open when I ran these tests. I also created a new Firefox profile and used it to run the SunSpider tests on Firefox. I wanted to ensure that these test results would be as accurate as possible.</p>
<p>I found it interesting to see the mean times it took for the tests in the SunSpider suite to be completed. It was also interesting to see what the 95% confidence intervals were, which as some of those reading this may know, are used to determine with 95% certainty that true mean values are within those intervals. I viewed the source code on the SunSpider website to see how those values were calculated using a Student&#8217;s t-distribution, and was reminded of concepts that I learned about in a university statistics course. After running the tests three times with Google Chrome, the average time it took for the tests to be completed was 822.2 ms. I then ran the tests three times with Firefox, and the average time it took for the tests on Firefox to be completed was 1756.8 ms. Firefox took more than twice as long as Chrome to complete the suite of tests. One can verify this after viewing the results of the <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[41,85,48,47,49],%223d-morph%22:[48,46,37,38,36],%223d-raytrace%22:[44,42,41,42,42],%22access-binary-trees%22:[3,4,5,5,6],%22access-fannkuch%22:[20,51,20,19,18],%22access-nbody%22:[31,33,29,29,28],%22access-nsieve%22:[5,7,6,6,6],%22bitops-3bit-bits-in-byte%22:[4,4,3,4,4],%22bitops-bits-in-byte%22:[11,12,14,11,11],%22bitops-bitwise-and%22:[13,14,15,13,16],%22bitops-nsieve-bits%22:[24,53,21,21,21],%22controlflow-recursive%22:[3,4,4,4,4],%22crypto-aes%22:[20,64,19,17,18],%22crypto-md5%22:[15,21,15,16,19],%22crypto-sha1%22:[15,14,12,14,15],%22date-format-tofte%22:[51,94,48,48,47],%22date-format-xparb%22:[67,78,53,55,55],%22math-cordic%22:[26,25,25,26,26],%22math-partial-sums%22:[38,34,36,35,36],%22math-spectral-norm%22:[14,14,15,14,23],%22regexp-dna%22:[43,24,24,22,23],%22string-base64%22:[27,30,28,26,27],%22string-fasta%22:[37,37,36,38,37],%22string-tagcloud%22:[59,57,61,57,55],%22string-unpack-code%22:[88,84,84,87,82],%22string-validate-input%22:[67,50,51,50,95]}">first</a>, <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[39,36,86,48,40],%223d-morph%22:[50,37,49,42,39],%223d-raytrace%22:[45,40,41,41,41],%22access-binary-trees%22:[5,4,5,5,5],%22access-fannkuch%22:[19,19,33,18,19],%22access-nbody%22:[29,31,28,28,27],%22access-nsieve%22:[5,6,5,6,5],%22bitops-3bit-bits-in-byte%22:[4,4,4,4,4],%22bitops-bits-in-byte%22:[10,11,9,12,10],%22bitops-bitwise-and%22:[14,14,14,14,15],%22bitops-nsieve-bits%22:[22,21,37,22,22],%22controlflow-recursive%22:[4,3,4,4,4],%22crypto-aes%22:[20,18,18,16,17],%22crypto-md5%22:[14,15,15,14,14],%22crypto-sha1%22:[13,13,13,16,15],%22date-format-tofte%22:[57,48,48,49,48],%22date-format-xparb%22:[56,55,53,55,63],%22math-cordic%22:[28,25,26,26,25],%22math-partial-sums%22:[37,36,36,35,39],%22math-spectral-norm%22:[16,16,15,15,16],%22regexp-dna%22:[23,23,23,24,23],%22string-base64%22:[28,28,27,25,26],%22string-fasta%22:[38,37,38,36,37],%22string-tagcloud%22:[59,72,57,54,56],%22string-unpack-code%22:[92,99,92,81,82],%22string-validate-input%22:[68,142,92,95,93]}">second</a>, and <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[39,36,48,49,51],%223d-morph%22:[51,39,55,39,39],%223d-raytrace%22:[46,43,40,40,39],%22access-binary-trees%22:[5,4,6,7,3],%22access-fannkuch%22:[19,20,19,21,19],%22access-nbody%22:[30,32,42,29,27],%22access-nsieve%22:[5,7,6,8,6],%22bitops-3bit-bits-in-byte%22:[6,5,4,5,4],%22bitops-bits-in-byte%22:[10,10,25,10,10],%22bitops-bitwise-and%22:[15,15,29,19,17],%22bitops-nsieve-bits%22:[21,22,23,25,21],%22controlflow-recursive%22:[4,4,4,4,5],%22crypto-aes%22:[20,16,17,16,16],%22crypto-md5%22:[14,14,14,14,15],%22crypto-sha1%22:[11,14,13,14,14],%22date-format-tofte%22:[71,47,48,140,49],%22date-format-xparb%22:[51,52,55,85,62],%22math-cordic%22:[27,27,28,43,26],%22math-partial-sums%22:[37,36,35,50,35],%22math-spectral-norm%22:[14,14,14,16,14],%22regexp-dna%22:[24,23,24,23,23],%22string-base64%22:[27,26,26,30,28],%22string-fasta%22:[36,37,37,37,37],%22string-tagcloud%22:[58,120,54,57,56],%22string-unpack-code%22:[90,123,90,84,84],%22string-validate-input%22:[59,117,46,50,49]}">third</a> tests I ran with Chrome, and the results of the <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[69,74,72,72,72],%223d-morph%22:[126,123,123,123,123],%223d-raytrace%22:[124,122,122,122,121],%22access-binary-trees%22:[54,55,54,54,55],%22access-fannkuch%22:[102,101,101,102,102],%22access-nbody%22:[42,42,41,41,42],%22access-nsieve%22:[15,15,18,15,15],%22bitops-3bit-bits-in-byte%22:[1,2,1,2,2],%22bitops-bits-in-byte%22:[12,12,12,12,12],%22bitops-bitwise-and%22:[3,2,3,2,2],%22bitops-nsieve-bits%22:[37,34,34,34,34],%22controlflow-recursive%22:[49,48,49,48,49],%22crypto-aes%22:[53,54,58,55,53],%22crypto-md5%22:[25,25,24,25,25],%22crypto-sha1%22:[13,13,13,13,14],%22date-format-tofte%22:[141,140,139,140,142],%22date-format-xparb%22:[136,137,139,134,138],%22math-cordic%22:[55,53,53,53,52],%22math-partial-sums%22:[26,25,25,25,25],%22math-spectral-norm%22:[12,12,12,12,12],%22regexp-dna%22:[122,115,104,131,135],%22string-base64%22:[24,24,24,24,25],%22string-fasta%22:[107,106,107,108,109],%22string-tagcloud%22:[129,140,134,134,132],%22string-unpack-code%22:[211,205,206,204,218],%22string-validate-input%22:[56,60,69,68,59]}">first</a>, <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[71,71,71,71,71],%223d-morph%22:[122,123,130,124,124],%223d-raytrace%22:[123,121,122,122,122],%22access-binary-trees%22:[56,56,54,55,56],%22access-fannkuch%22:[99,101,102,103,104],%22access-nbody%22:[41,41,42,41,41],%22access-nsieve%22:[15,15,14,15,15],%22bitops-3bit-bits-in-byte%22:[1,2,1,2,2],%22bitops-bits-in-byte%22:[12,12,12,12,12],%22bitops-bitwise-and%22:[2,2,2,2,2],%22bitops-nsieve-bits%22:[35,35,37,34,34],%22controlflow-recursive%22:[51,49,48,49,48],%22crypto-aes%22:[54,56,54,53,53],%22crypto-md5%22:[25,25,25,25,25],%22crypto-sha1%22:[13,14,13,13,14],%22date-format-tofte%22:[141,146,143,146,145],%22date-format-xparb%22:[137,135,135,139,134],%22math-cordic%22:[53,54,53,52,53],%22math-partial-sums%22:[25,25,25,25,26],%22math-spectral-norm%22:[12,11,12,12,12],%22regexp-dna%22:[117,102,122,92,111],%22string-base64%22:[25,25,25,25,27],%22string-fasta%22:[105,107,107,107,123],%22string-tagcloud%22:[128,130,128,130,131],%22string-unpack-code%22:[207,205,207,213,254],%22string-validate-input%22:[59,56,69,58,68]}">second</a>, and <a href="http://www2.webkit.org/perf/sunspider-0.9/sunspider-results.html?{%223d-cube%22:[69,72,74,69,72],%223d-morph%22:[130,123,127,125,123],%223d-raytrace%22:[124,122,135,123,125],%22access-binary-trees%22:[53,56,57,59,54],%22access-fannkuch%22:[99,102,134,106,100],%22access-nbody%22:[42,42,44,42,41],%22access-nsieve%22:[15,15,15,16,15],%22bitops-3bit-bits-in-byte%22:[2,1,1,2,2],%22bitops-bits-in-byte%22:[12,12,12,12,12],%22bitops-bitwise-and%22:[2,2,3,2,3],%22bitops-nsieve-bits%22:[34,34,34,34,35],%22controlflow-recursive%22:[48,48,53,51,50],%22crypto-aes%22:[54,55,56,57,57],%22crypto-md5%22:[25,24,25,25,25],%22crypto-sha1%22:[13,14,13,13,14],%22date-format-tofte%22:[141,143,146,146,144],%22date-format-xparb%22:[136,146,138,137,135],%22math-cordic%22:[53,52,53,54,52],%22math-partial-sums%22:[25,26,25,25,25],%22math-spectral-norm%22:[11,12,12,12,12],%22regexp-dna%22:[99,110,121,104,122],%22string-base64%22:[25,25,25,25,25],%22string-fasta%22:[106,109,108,109,111],%22string-tagcloud%22:[127,163,132,129,127],%22string-unpack-code%22:[202,276,203,204,206],%22string-validate-input%22:[59,94,57,67,61]}">third</a> tests I ran with Firefox. One can also copy and paste URLs from one set of test results into a text box on a page that contains the other browser&#8217;s results to compare results.</p>
<p>As you may have seen if you have viewed the results of other JavaScript benchmark tests that have been posted on the web, they tend to list only the mean times it took to complete them. Confidence intervals are not mentioned in the Computerworld article that I previously mentioned. When one wants to see precisely how much faster one browser&#8217;s JavaScript engine is than another&#8217;s, one may want to take confidence intervals into account. However, in the tests that I ran, overall confidence intervals did not differ by a large percentage. The mean values and confidence intervals were similar for the three tests that were run on each browser. This gives a strong indication that Chrome&#8217;s JavaScript performance is significantly better than that of Firefox. </p>
<p>Google Chrome may outperform other browsers in JavaScript performance. However, Internet Explorer&#8217;s JavaScript performance is as good as Google Chrome&#8217;s when <a href="http://www.google.com/chromeframe">Google Chrome Frame</a> is used with it. According to <a href="http://www.computerworld.com/s/article/9138459/IE8_runs_10_times_faster_with_Google_plug_in">this other Computerworld article</a>, when Internet Explorer is used with Chrome&#8217;s JavaScript engine, its JavaScript performance is, understandably, much better. Once again, Computerworld used the SunSpider test suite to determine these JavaScript performance differences. Google Chrome&#8217;s JavaScript engine&#8217;s performance may be better than the performance of other JavaScript engines. It also appears that it will continue to be better than other JavaScript engines. In <a href="http://chrome.blogspot.com/2009/11/bookmark-sync-and-more-speed-in-latest.html">this post on the Google Chrome blog</a> it was said that JavaScript performance in its latest beta has increased by 30% since the last stable release of Google Chrome. </p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/11/16/benchmarking-of-javascript-performance-firefox-3-5-vs-google-chrome-3-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I Set Up a Twitter Account</title>
		<link>http://jake.kasprzak.ca/2009/08/04/why-i-set-up-a-twitter-account/</link>
		<comments>http://jake.kasprzak.ca/2009/08/04/why-i-set-up-a-twitter-account/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 18:38:14 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=626</guid>
		<description><![CDATA[Previously, I had not found that I needed to post anything to this blog that was up to the minute. And I previously never found that I needed to post anything that was 140 characters in length or less. For these reasons, I never set up an account on Twitter. I could have used a [...]]]></description>
			<content:encoded><![CDATA[<p>Previously, I had not found that I needed to post anything to this blog that was up to the minute. And I previously never found that I needed to post anything that was 140 characters in length or less. For these reasons, I never set up an account on Twitter. I could have used a Twitter account to post information on when this blog is updated. However, I did not think that there would be anything that I would &#8220;tweet&#8221; other than information on blog updates. That was until a few incidents that occurred recently.</p>
<p>I found that I needed to update <a href="http://userscripts.org/scripts/show/47138">the Greasemonkey user script that I wrote titled &#8220;Do Not Remember Me&#8221;</a> a few weeks ago. There was a very minor adjustment that I needed to make to it after a change was made to the Google Accounts login form. I chose not to write a blog post about this update, as this update was a very minor one. However, if I had a Twitter account at the time, information on this update could have been posted there. Also, <a href="https://addons.mozilla.org/en-US/firefox/addon/9027">the Firefox extension that I wrote titled &#8220;Bookmark Current Tab Set&#8221;</a> is now considered public and is no longer considered experimental. This change of the status of this Firefox extension is more information that I thought would be better suited to a Twitter post than to a post to this blog.</p>
<p>You may <a href="http://twitter.com/jkasprzak">find me on Twitter here</a>. I am not sure how often I will be posting to my Twitter account. However, I plan on posting to it, as I plan on continuing to post to this blog, and I plan on &#8220;tweeting&#8221; about updates to this blog. </p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/08/04/why-i-set-up-a-twitter-account/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bookmark Current Tab Set 0.2.2 Released</title>
		<link>http://jake.kasprzak.ca/2009/07/14/bookmark-current-tab-set-0-2-2-released/</link>
		<comments>http://jake.kasprzak.ca/2009/07/14/bookmark-current-tab-set-0-2-2-released/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 18:25:04 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=607</guid>
		<description><![CDATA[I was quite busy shortly before version 3.5 of the Mozilla Firefox web browser was released. I was unable to take the time needed to ensure that Bookmark Current Tab Set, the extension for Firefox that I wrote, was compatible with this newer version of Firefox. I was unfortunately unable to make this extension compatible [...]]]></description>
			<content:encoded><![CDATA[<p>I was quite busy shortly before version 3.5 of the Mozilla Firefox web browser was released. I was unable to take the time needed to ensure that <a href="https://addons.mozilla.org/en-US/firefox/addon/9027">Bookmark Current Tab Set</a>, the extension for Firefox that I wrote, was compatible with this newer version of Firefox. I was unfortunately unable to make this extension compatible with Firefox 3.5 by the time this newer version of Firefox was released. I understand that some may not be using this new version of Firefox because some Firefox extensions are still not compatible with it. For this reason, I have tried to have this extension updated as soon as possible. Now a new version of Bookmark Current Tab Set is available, and it is compatible with version 3.5 of Firefox.</p>
<p>The most significant difference between this version of the extension and previous versions of it is that this new version is compatible with Firefox 3.5. However, some might find that folders to which this extension adds bookmarks can no longer be placed within other bookmark folders. Some might also find that new folders cannot be created from the dialog box from which tabs can be bookmarked. However, this functionality was quite dependent on code in Firefox 3.0, and that code had been modified. The ability to put the folders that this extension creates within other folders may have been a seldom used feature, and it needed to be removed in order for this extension to be released within a reasonable amount of time. I apologize to those who made use of these features that needed to be removed. If some want this ability to put folders created by the extension into other folders, then the feature for doing this may appear again in future versions of this extension.</p>
<p>The extension can be downloaded and installed from <a href="https://addons.mozilla.org/en-US/firefox/downloads/file/58881/bookmark_current_tab_set-0.2.2-fx.xpi">here</a> or from <a href="http://jake.kasprzak.ca/code/bcts.xpi">here</a>. I would appreciate receiving feedback on this extension. It has also been modified so that it will not be as likely to conflict with other Firefox add-ons. For this reason, it will be more likely to be considered non-experimental soon, and so there may be more users who will suggest changes to it in the future. And when more users make suggestions on what can be adjusted in the extension, suggested changes will be more likely to be implemented.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/07/14/bookmark-current-tab-set-0-2-2-released/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>URL Shortening Services and Their Security Implications</title>
		<link>http://jake.kasprzak.ca/2009/06/30/url-shortening-services-and-their-security-implications/</link>
		<comments>http://jake.kasprzak.ca/2009/06/30/url-shortening-services-and-their-security-implications/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 18:05:51 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=564</guid>
		<description><![CDATA[URL shortening services such as TinyURL.com have been in existence for years. These services that are used for creating shorter versions of long URLs have been considered useful for a long time. Now that micro-blogging services such as Twitter are often used, and because some of these services enforce a limit of 140 characters per [...]]]></description>
			<content:encoded><![CDATA[<p>URL shortening services such as <a href="http://www.tinyurl.com/">TinyURL.com</a> have been in existence for years. These services that are used for creating shorter versions of long URLs have been considered useful for a long time. Now that micro-blogging services such as Twitter are often used, and because some of these services enforce a limit of 140 characters per entry, URL shortening services are now considered more useful than ever. Users of micro-blogging services often need to make the links that they post as short as possible, and so even URLs that are not very long tend to be shortened in micro-blog posts. And while URL shortening services have always been useful, there are security risks associated with them. When URLs are converted to ones that would not reveal any information about the content of pages to which these shortened URLs direct users, the probability of users clicking on malicious links increases.</p>
<p>Reflected XSS attacks tend to be carried out by directing users to malicious URLs. When I look through the URLs on the list of reflected XSS vulnerabilities on <a href="http://www.xssed.com">XSSed.com</a>, I find that many of these URLs are quite unwieldy, and contain text that may appear suspicious. It seems that a method for making URLs appear to be innocuous would be to display them in the form of URLs that would be output by URL shortening services. Also, Twitter has been used to spread an XSS worm before, and so URL shortening services could be used to launch XSS attacks via Twitter once again.</p>
<p>I am not the first to write about the security implications that these services have. There is a <a href="http://unweary.com/2009/04/the-security-implications-of-url-shortening-services.html">very good blog entry on this topic that can be viewed here</a>. There are articles on how these services can be used in phishing attacks that can be viewed <a href="http://blogs.techrepublic.com.com/security/?p=1044">here</a> and <a href="http://blog.trendmicro.com/tinyurl-phishing-becoming-popular/">here</a>. It is mentioned in each of these articles how revealing of the longer versions of shortened URLs can be done. However, many users may not take the time to verify where they would be taken when they go to one of these shortened URLs. Some might not want to take the time to visit a website such as <a href="http://longurl.org/">LongURL</a> to view the longer URL to which they would be redirected. And some might not use tools such as <a href="https://addons.mozilla.org/en-US/firefox/addon/10297">the Firefox extension for revealing URLs shortened by the service known as bit.ly</a>. Many users simply prefer not to take the necessary amounts of time to prevent themselves from possibly going to a place on the web to which they would not want to be redirected.</p>
<p>It seems that when users are given a choice between security and convenience, they tend to choose the latter option. There must be a way for URL shortening services to be both secure and convenient. Until there are improved methods for determining whether or not shortened URLs are being used for malicious purposes, these URL shortening services will be used for attacks such as phishing and XSS attacks.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/06/30/url-shortening-services-and-their-security-implications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adblock Plus vs. NoScript: Inside the Dispute Between Two of the Best-Known Firefox Extensions</title>
		<link>http://jake.kasprzak.ca/2009/05/11/adblock-plus-vs-noscript-inside-the-dispute-between-two-of-the-best-known-firefox-extensions/</link>
		<comments>http://jake.kasprzak.ca/2009/05/11/adblock-plus-vs-noscript-inside-the-dispute-between-two-of-the-best-known-firefox-extensions/#comments</comments>
		<pubDate>Mon, 11 May 2009 13:07:38 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=467</guid>
		<description><![CDATA[Whenever there is a dispute between two parties, discovering all of the important facts regarding the dispute can be difficult. There are two sides to every story about disputes between two parties. Those on one side of the dispute may accuse those on the other side of it of not being perfectly honest when giving [...]]]></description>
			<content:encoded><![CDATA[<p>Whenever there is a dispute between two parties, discovering all of the important facts regarding the dispute can be difficult. There are two sides to every story about disputes between two parties. Those on one side of the dispute may accuse those on the other side of it of not being perfectly honest when giving information regarding facts about the dispute. And individuals on both sides tend to tell the truth when they accuse those on the other side of not being completely honest. When the dispute occurred between two of the best-known Firefox extensions, <a href="http://noscript.net/">NoScript</a> and <a href="http://adblockplus.org">Adblock Plus</a>, the difficulty in determining what actually happened must have been evident to even those who had not followed this dispute very closely. In this entry, I give the relevant facts about this dispute, and I try to be as impartial as possible in doing so.</p>
<p>As those familiar with Adblock Plus (often abbreviated as ABP) know, it blocks web page content by using sets of filters. JavaScript content, Flash animations, and groups of image files are examples of what can be blocked by these filters. Any content that matches certain patterns in the source code of web pages can be blocked with ABP&#8217;s filters. As end users prefer to have web content filtered for them automatically, users can subscribe to filter lists. These lists are maintained and updated by individuals who look for content that users may want to have blocked. These lists tend to be modified over time, and users who subscribe to these lists have their lists updated periodically. Users who subscribe to these lists trust those who maintain these lists to block content that these users would want to have blocked.</p>
<p>NoScript is a Firefox extension that blocks much content of web pages by default. NoScript relies on the donations of users in order to fund the project, and this is done through advertising on websites run by NoScript creator Giorgio Maone. Those who have subscribed to <a href="http://easylist.adblockplus.org/">a filter list for ABP known as EasyList</a> may have found that some of the page content on sites run by Maone had been blocked. Maone responded to this by updating the pages on these websites so that those ads could again be viewed by those who used EasyList. Then these filters continued to be updated so that those ads would be blocked again. To Maone, it seemed as though the site content that helps create funding for the development of NoScript was being deliberately targeted by the EasyList filter for ABP. In fact, according to Maone, filter rules were implemented that would even prevent the download of NoScript from those websites. This is what led to a response from Maone that was highly controversial, and was one that he would understandably regret very much.</p>
<p>Firefox extensions are not &#8220;sandboxed&#8221; in the browser, meaning that there is nothing preventing them from interfering with each other. Maone took advantage of this fact. NoScript was modified so that it would actually modify ABP&#8217;s filter list so that the four websites that were targeted would be whitelisted. This interference with another extension was done rather surreptitiously. Information on this was added to the release notes of the NoScript version that performed this action. However, not many users may have read this, and Maone later admitted that he should have done more to inform users about this. One extension interfering with the operation of another, without explicitly asking for user consent, was considered a very questionable action on the part of Maone.</p>
<p>Some may want to read the official statements on this conflict that were written by the authors of these extensions. <a href="http://adblockplus.org/blog/attention-noscript-users">ABP creator Wladimir Palant&#8217;s comments about this issue can be found in this blog post</a>. <a href="http://hackademix.net/2009/05/04/dear-adblock-plus-and-noscript-users-dear-mozilla-community/">Maone&#8217;s response can be read here</a>.</p>
<p>It was only in the last entry that I wrote here two weeks ago that I mentioned how NoScript could be used to defend against XSS attacks. There were many who considered NoScript a trusted extension, and it may have been considered one of the most trusted Firefox extensions in existence. In fact, all Firefox extensions can be considered trusted after they are reviewed and approved by staff members at <a href="https://addons.mozilla.org">addons.mozilla.org, a website that is often referred to simply as AMO</a>. All extensions uploaded there are considered &#8220;experimental&#8221; before their code gets reviewed. Theoretically, the trust that users would have in non-experimental extensions could be betrayed by individuals who could write extensions that get approved, only to be later modified to surreptitiously perform actions undesired by its users. One would certainly not expect an extension written by someone who seemed motivated to prevent websites from doing anything without user consent to be such an extension. However, this is what happened, and it is the reason for the recent backlash against NoScript and for its creator&#8217;s apologies. If anything good can come from this dispute, it is that this could lead to sandboxing of extensions within the Firefox web browser.</p>
<p>There are those, however, who would say that Palant should also admit to wrongdoing. When users install Adblock Plus, it is with the expectation that advertising that is considered intrusive will be removed by it. When viewing the four sites run by Maone, one can see that the advertising there is unlikely to be considered a reason for the existence of ad blocking software. Targeting of Maone&#8217;s sites, which Palant admitted to doing, seemed questionable. However, it seemed as though there should have been more communication between individuals on the two sides of this dispute. There had to have been a way to avoid the cycle of filter updating followed by evasion of those filters. </p>
<p>Both Maone and Palant have faced backlash from many users. Maone, however, has admitted to wrongdoing, and has removed the code that was the reason for his apologies. And after checking <a href="http://easylist.adblockplus.org/easylist.txt">the EasyList filter list</a>, the filters Maone mentioned no longer seem to be there. I believe that the individuals on both sides of this dispute could have done better in trying to prevent it. Those who write Firefox extensions seem to be motivated by simply making Firefox a better browser, and thus one would not expect them to have such disputes as they try to reach their common goal. It seemed as if Maone and Palant might have lost their focus, and are now not as trusted as they had previously been. However, over time, I believe that we might be able to trust these individuals and their extensions again. In any case, I hope to not have to write about a conflict between Firefox extension developers again.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/05/11/adblock-plus-vs-noscript-inside-the-dispute-between-two-of-the-best-known-firefox-extensions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Importance of NoScript&#8217;s Surrogate Scripts</title>
		<link>http://jake.kasprzak.ca/2009/03/23/the-importance-of-noscripts-surrogate-scripts/</link>
		<comments>http://jake.kasprzak.ca/2009/03/23/the-importance-of-noscripts-surrogate-scripts/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 23:57:06 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=331</guid>
		<description><![CDATA[The tradeoff between security and convenience is one that users often face when browsing the web. Those who prefer security at the expense of convenience would prefer to use the Firefox extension called NoScript, which is an extension whose name emphasizes the measures it takes to secure the browser. There are those who would say [...]]]></description>
			<content:encoded><![CDATA[<p>The tradeoff between security and convenience is one that users often face when browsing the web. Those who prefer security at the expense of convenience would prefer to use <a href="http://noscript.net/">the Firefox extension called NoScript</a>, which is an extension whose name emphasizes the measures it takes to secure the browser. There are those who would say that the measures that NoScript takes in making Firefox a more secure browser are too excessive, as it blocks all scripts that are not whitelisted. Much web page content is blocked by NoScript until whitelisted. And that can be quite inconvenient, as users of <a href="http://userscripts.org/scripts/show/12673">my Greasemonkey script that works with embedded YouTube videos</a> have noted on a few occasions. Some pages actually may not function correctly at all when sites such as Yieldmanager.com are blocked by NoScript. As some users do not want to have to choose between allowing all scripts that a page uses and not having the page function correctly, an attempt at solving this issue is implemented in the more recent versions of NoScript. Newer versions of NoScript replace some blocked scripts with scripts that are known as surrogate scripts.</p>
<p>These surrogate scripts handle the situations in which 3rd party scripts from sites such as Yieldmanager.com look for page content that is blocked by NoScript. These surrogate scripts cause pages to be more likely to be error-free by replacing blocked scripts with similar scripts. Some concerned &#8220;non-geeks&#8221; have wanted to know if these surrogate scripts send any data to 3rd party sites. However, those who have viewed and understand the source code in these scripts can assure these individuals that these scripts simply try to prevent web pages from being broken. There are some users of NoScript who had previously found that some pages were broken unless scripts from sites such as Yieldmanager.com were allowed. I found that when scripts from Yieldmanager.com were blocked, pages on Imageshack.us appeared to be broken. However, these pages did not appear to be broken when the surrogate script for Yieldmanager.com was used. I have also found that these surrogate scripts cut down on the clutter that appears in the error console, as there would be fewer errors on pages when these surrogate scripts are used.</p>
<p>Users who have used the more recent versions of NoScript may have used these surrogate scripts without even knowing that they used them. However, there are those who might want to more easily configure these scripts. At this time, there is no user interface for configuration of surrogate scripts, because as NoScript author Giorgio Maone says, those who would configure these scripts and options regarding them would likely not need one. Still, a UI would be convenient, as adjustments to configuration settings may sometimes be necessary. One might want to more easily adjust which sites use surrogate scripts and which ones do not. Also, one might want to be informed when sites are using these surrogate scripts. In fact, I decided to make a few adjustments to surrogate scripts so that they would display information that says surrogate scripts are being used right on these pages where they are used.</p>
<p>I wanted to know when the surrogate script for code from YieldManager.com was being used. So I added a JavaScript <code>alert</code> statement to the surrogate script for YieldManager.com to determine this. As those who are familiar with JavaScript know, that statement would make a pop-up window appear when that script is executed. I then decided to make that code more complex by adding code to it that would execute when the page is finished loading so that text would be added directly to pages to indicate that this surrogate script is being used with these pages. However, it would be preferable for information on when these scripts are being used to instead be in the browser UI.</p>
<p>Users of the web may always need to choose between security and convenience. The newer versions of NoScript make it so that less convenience would need to be sacrificed for improved security. Still, it would be more convenient for there to be a UI to work with these surrogate scripts used by NoScript. However, it is good to know that the decision to choose security over convenience when browsing the web now seems to be a less difficult one to make.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/03/23/the-importance-of-noscripts-surrogate-scripts/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>A Defence of a Greasemonkey Script That I Never Thought I Would Defend</title>
		<link>http://jake.kasprzak.ca/2009/03/09/a-defence-of-a-greasemonkey-script-that-i-never-thought-i-would-defend/</link>
		<comments>http://jake.kasprzak.ca/2009/03/09/a-defence-of-a-greasemonkey-script-that-i-never-thought-i-would-defend/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 05:18:22 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=300</guid>
		<description><![CDATA[It was almost a year ago that I quickly wrote a Greasemonkey user script titled &#8220;Web Form Data Analyzer.&#8221; This script, which can be found here, is one that modifies the action attributes of &#60;form&#62; tags of web pages so that submitted form data is redirected to a page that displays exactly what data gets [...]]]></description>
			<content:encoded><![CDATA[<p>It was almost a year ago that I quickly wrote a Greasemonkey user script titled &#8220;Web Form Data Analyzer.&#8221; This <a href="http://userscripts.org/scripts/show/24512">script, which can be found here</a>, is one that modifies the <code>action</code> attributes of <code>&lt;form&gt;</code> tags of web pages so that submitted form data is redirected to a page that displays exactly what data gets submitted through forms. The page to which the data is sent is one that is specifically for displaying that data, and is part of <a href="http://www.schrenk.com/nostarch/webbots/">the official reference website for the book titled &#8220;Webbots, Spiders, and Screen Scrapers&#8221;</a> by Michael Schrenk. It is not a script that I have often used myself, as I have not taken much time to view what data is sent via web forms. When I first released that script, I mentioned that I did not expect there to be much interest in it. There are some, however, who have installed this script. It also received <a href="http://userscripts.org/scripts/reviews/24512">a negative review from a user on Userscripts.org</a>, which stated there is no way to ensure that the page to which the form data is sent can be trusted. In addition, it was said in that review that one should instead use <a href="https://addons.mozilla.org/en-US/firefox/addon/966">a Firefox extension titled &#8220;Tamper Data&#8221;</a> as that extension is one that can be trusted. While that extension can be used to view submitted form data, there are reasons one may prefer to use the script that I wrote instead.</p>
<p>While some might like to be able to view data that is being sent to and from a web browser, there are those who may find that the Tamper Data extension is not what they need. Those who want to be able to view the data that is sent via web forms may want something more simple, and something that is specialized to the task of displaying the data that is sent through forms. The Web Form Data Analyzer script is for those who only need the software to perform the task that it performs. In addition, the script displays the form data that would be sent through the form without the data ever being sent to the website to which form data is supposed to be sent. Therefore, those who would prefer to simply view the data that would be sent through a form without actually submitting it to the site where it is supposed to go may prefer to use this script.</p>
<p>There may be those who are not sure if the page to which the script redirects submitted form data will accurately display this submitted data. However, <a href="http://www.schrenk.com/nostarch/webbots/scripts/reader.php?show=LISTING_5_10.php">the source code that this page apparently uses can be viewed here</a>. As one can see by viewing that code, it is simply PHP code that displays values that would be stored in variables when form data is submitted. And if one does not think that that page actually uses that source code, then the script could be modified so that the page to which it redirects form data will be different. What would be needed in that case would be a web server to host a page that uses code that displays this data. One would likely be using Firefox when using this script, and so one would likely be able to use <a href="http://davidkellogg.com/wiki/Main_Page">an extension called Plain Old Webserver</a> to set up a web server. Going through this process of setting up a web server that hosts this page might seem like more work than it is worth, although it is a way to ensure that the data returned will be accurate.</p>
<p>This script may be useful for those who trust the official reference website for the book titled “Webbots, Spiders, and Screen Scrapers.” Those who do not trust it may find that there are other methods for determining what data is sent through web forms. Opinions on whether or not that page can be trusted may differ, and this script is useful for those who believe that the page that this script uses is reliable.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/03/09/a-defence-of-a-greasemonkey-script-that-i-never-thought-i-would-defend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Reaction to One of My Posts Being Overrated by Google</title>
		<link>http://jake.kasprzak.ca/2009/01/19/my-reaction-to-one-of-my-posts-being-overrated-by-google/</link>
		<comments>http://jake.kasprzak.ca/2009/01/19/my-reaction-to-one-of-my-posts-being-overrated-by-google/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 05:29:32 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=218</guid>
		<description><![CDATA[One would think that I would be quite pleased when I see that one of my blog posts appear among the first ten results returned by Google when a commonly entered search term is entered into Google. However, there is one post that I had recently written that I do not believe is worthy of [...]]]></description>
			<content:encoded><![CDATA[<p>One would think that I would be quite pleased when I see that one of my blog posts appear among the first ten results returned by Google when a commonly entered search term is entered into Google. However, there is one post that I had recently written that I do not believe is worthy of being on the first page of Google&#8217;s search results after a certain frequently entered search term is submitted to Google.</p>
<p>I have recently found that a number of individuals have found their way to my site after entering &#8220;writing firefox extensions&#8221; into a search engine. It was after finding that more individuals than I expected were viewing a post that contains that search term in its title that I decided to conduct a Google search using that term. I then found that the blog post that I wrote titled &#8220;Going Beyond Programming When Writing Firefox Extensions&#8221; was on the first page of search results when I Googled that term. You can see <a href="http://www.google.com/search?hl=en&#038;q=writing+firefox+extensions">where that blog post currently ranks in search results when that term is entered if you click here</a>. Since the time that I first discovered where that post ranked when that search term is used, I have found that that post did not rank as high as it previously did. However, I am unsure if it should be ranked among the first ten results, ahead of hundreds of thousands of results returned when a search for that term is conducted.</p>
<p>The term &#8220;writing firefox extensions&#8221; may often be entered by those who would like to join the many individuals who write extensions for Firefox. When a search for information on writing Firefox extensions is done, what individuals may want is the best information on how to write these extensions. However, my aforementioned blog post does not contain the best information for those who aspire to write Firefox extensions. Inclusion of the text of this search term in the title of that blog post is what may be one reason it ranks as high as it does among these search results. However, I never meant for that blog post to be considered an authoritative guide for those who want to write Firefox extensions. If I had known that that post was going to be ranked that high among search results, I would have put more effort into making it contain as much useful information as possible.       </p>
<p>I would like to apologize to those who tried to find information on writing Firefox extensions only to find that any of their time was wasted by coming across this information that may not have been very useful. I have mentioned before that Google is not perfect. That blog post being ranked as high as it is appears to be evidence of this fact. However, Google&#8217;s algorithms were designed and written by those who have much knowledge of search engine technology. To dispute where pages should rank among search results would seem to be arguing with these individuals. And who am I to argue with them? I suppose I will need to accept that some my blog posts rank higher among Google&#8217;s search results than they should.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/01/19/my-reaction-to-one-of-my-posts-being-overrated-by-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Minor Updates to Software That I Wrote</title>
		<link>http://jake.kasprzak.ca/2009/01/05/minor-updates-to-software-that-i-wrote/</link>
		<comments>http://jake.kasprzak.ca/2009/01/05/minor-updates-to-software-that-i-wrote/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 05:30:15 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=202</guid>
		<description><![CDATA[Although I am not sure what kind of software I should write next, I am certain that I will maintain and update what I have already written. And I have recently found that I needed to update one of my Greasemonkey scripts as well as the Firefox extension that I wrote. The Greasemonkey script that [...]]]></description>
			<content:encoded><![CDATA[<p>Although I am not sure what kind of software I should write next, I am certain that I will maintain and update what I have already written. And I have recently found that I needed to update one of my Greasemonkey scripts as well as the Firefox extension that I wrote. The <a href="http://userscripts.org/scripts/show/12673">Greasemonkey script that I wrote titled &#8220;Link to YouTube Video Pages from Embedded YouTube Videos&#8221;</a> was found to not work with an embedded video, so I corrected it. The <a href="https://addons.mozilla.org/en-US/firefox/addon/9027">Firefox extension titled &#8220;Bookmark Current Tab Set&#8221;</a> that I wrote needed to have an update made to its user interface, and so that update was made. These updates may certainly not have been critical, although I do consider these updates necessary.</p>
<p>This Greasemonkey script that I wrote did not work with embedded videos that were embedded a certain way, and so I made the necessary corrections to it. I also added a feature to it so that it would not add links to YouTube pages on the <a href="http://video.google.com/">main Google Video page</a>. This was done because there already is a link below the embedded video that is featured on that page to the page on YouTube where that video can be found. These updates were quite minor, although they needed to be made.</p>
<p>In version 0.2.0 of the Firefox extension that I wrote, I added a menu option that brings up a dialog box. However, it was only after releasing this version of the extension that I thought that I should add an ellipsis to the end of the title of this menu option. I could have checked the extension more thoroughly for errors both in functionality and in the user interface before releasing version 0.2.0 of the extension. However, as is it often said that those who write this kind of software should release early and release often, I chose to release it before I could check for all errors that I might have made in writing it. </p>
<p>I am currently trying to decide on what kind of software to write next, and I am not sure what my focus should be. However, I am sure that I will continue to make the necessary updates to what I have already written.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2009/01/05/minor-updates-to-software-that-i-wrote/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>noXSS: A Firefox Extension for Defending Against Reflected XSS Attacks</title>
		<link>http://jake.kasprzak.ca/2008/12/24/noxss-a-firefox-extension-for-defending-against-reflected-xss-attacks/</link>
		<comments>http://jake.kasprzak.ca/2008/12/24/noxss-a-firefox-extension-for-defending-against-reflected-xss-attacks/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 20:32:52 +0000</pubDate>
		<dc:creator>jkasprzak</dc:creator>
				<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://jake.kasprzak.ca/?p=180</guid>
		<description><![CDATA[After writing a Firefox extension that is still considered experimental, I decided to try to discover which Firefox extensions are the best ones that are considered experimental. After taking some time to look for experimental extensions to install, I came across one called &#8220;noXSS&#8221;, which can be found on this page on AMO. This extension, [...]]]></description>
			<content:encoded><![CDATA[<p>After writing a Firefox extension that is still considered experimental, I decided to try to discover which Firefox extensions are the best ones that are considered experimental. After taking some time to look for experimental extensions to install, I came across one called <a href="https://addons.mozilla.org/en-US/firefox/addon/9136">&#8220;noXSS&#8221;, which can be found on this page on AMO</a>. This extension, which is designed to protect its users from <a href="http://en.wikipedia.org/wiki/Cross-site_scripting#Non-Persistent">reflected (or non-persistent) XSS attacks</a>, is currently a work in progress. In <a href="http://forums.mozillazine.org/viewtopic.php?f=48&#038;t=908005">this post on the mozillaZine forums</a>, it was requested that end users test it and give feedback about it. As I thought that this extension could be useful, and as I understand the importance of peer review, I decided to install this extension, test it, and give feedback on it.</p>
<p>As it says <a href="http://www.noxss.org/">on the main page for the project here</a>, this extension is based on technology proposed by two individuals from the University of Passau and one individual from the University of Hamburg. This <a href="http://www.informatik.uni-hamburg.de/SVS/papers/2008_ACSAC_johns_Engelmann_Posegga_XSSDS.pdf">paper in which this was proposed can be viewed in PDF form if you click here</a>. In that paper, it was mentioned that input filtering and output sanitation are commonly used methods for preventing XSS attacks. However, the process of filtering of certain keywords that may indicate the possibility of an XSS attack, such as <code>"document"</code> or <code>"javascript"</code> tends to be flawed. This fact was noted in the paper, and the fact that output sanitation fails frequently was also noted. More complex and more reliable methods for detecting possible XSS attacks were proposed in that paper. It was suggested in that paper that data in HTTP requests and their corresponding HTTP responses should be analyzed and compared in order to report possible XSS attacks while preventing reports of false positives. It was said in that paper that when this XSS detecting software that was proposed was tested, there were no false negatives, and few false positives. Methods for further preventing false positives were also mentioned in the paper. Having said this, a Firefox extension based on what was proposed in this paper would be one that many would like to have.</p>
<p>The Firefox extension based on what was proposed in that paper currently only implements part of what was proposed in the paper. For example, it currently uses string matching when trying to detect XSS attacks, when the process of subsequence matching mentioned in the paper would detect more XSS attacks. However, in tests that I have run with it, it successfully prevented XSS attacks, except in situations that are not yet supported by this extension. In addition, I have yet to receive a false positive when using the newest version of noXSS. The testing that I had done on it may not have been thorough, and the author of the extension mentioned that there are some XSS attacks that it currently will not block. However, based on what I have seen on the noXSS project page regarding future plans and based on what I have seen in comments in the extension&#8217;s source code, there are clearly defined plans to make it work well in the future. At this time, one might still want to use the protection against XSS attacks offered by <a href="http://noscript.net/">a Firefox extension named NoScript</a>, which was mentioned both on the project page and on the paper on which this project is based. However, in the paper, it was said that use of NoScript can result in false positives because NoScript does not analyze as much HTTP data as the software proposed in the paper.</p>
<p>This Firefox extension has potential to be very useful, as it is based on technology that has already been found to work well. A number of individuals will need to test it and give feedback about it in order to ensure that it will be implemented properly. I will continue to test it, and I plan on testing future versions of it. I also may write more about it in the future. I look forward to working with future versions of this extension, and I plan on assisting in ensuring that it will work as well as it should.</p>
]]></content:encoded>
			<wfw:commentRss>http://jake.kasprzak.ca/2008/12/24/noxss-a-firefox-extension-for-defending-against-reflected-xss-attacks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

