1

I was using Tails 2.7 and NoScript was set to "Allow Scripts Globaly". The sites browserspy.dk and http://www.javatester.org/javascript.html say my Browser uses Javascript version 1.5.

But mozilla.org says this version was shipped with Firefox 1.0 on November 14, 2000.

I found a similar issue on https://tails.boum.org/blueprint/iceweasel_24/#index1h2 from October 16, 2013. But I did not find out why it was like this. And it seems to be unchanged.

(Could somebody fix the links, please? I do not have 10 reputation.)

  • Is this actually specific to Tor Browser or Tails? As far as I can see this is generic to all browsers? The reality is that support of various feature sets added with each version can be fragmented in their implementation status. The method of detection they use (the language attribute of a <script> tag) is actually deprecated and probably isn't ideal. Instead people tend to use feature detection to determine what javascript functionality is available. – cacahuatl Nov 27 '16 at 23:40
  • @canonizing ironize - Yes, it is not specific to Tor Browser or Tails. About the language attribute: HTML 4.0 Specification (W3C Working Draft 17-Sep-1997) says it is deprecated. The previous specification for HTML 3.2 does not include it. But why do the fingerprint sites say Javascript version 1.5 and not 1.4 or 1.6? Firefox uses SpiderMonkey which supports ECMA-262 5th edition (Javascript version 1.8.5). – Gabriel Schulz Nov 29 '16 at 22:54
  • "The reality is that support of various feature sets added with each version can be fragmented in their implementation status." some features it includes, some it does not. Testing for features is a more reliable method than trying to detect a specific version and just #yolo hoping the features are there. – cacahuatl Nov 30 '16 at 1:48
  • @canonizing ironize - I did read your comment. :) Why the language attribute it is not useful is also clear now. About the version number: Could it be that SpiderMonkey does only execute Code that is named 1.5 or lower or that does not have a language attribute. And that this was just a random decision? – Gabriel Schulz Nov 30 '16 at 2:08
  • from what I can tell from the tests, it looks at script tabs that have the language attribute and firefox just doesn't pass unknown languages onto it, so if you put your code into a "javascript1.6" script element, it would never be passed on to the javascript engine to execute (otherwise the value that each successive tag sets would have been incremented) – cacahuatl Nov 30 '16 at 2:25
1

Thank you for the discussion above @canonizingironize. Summary:

Some fingerprint sites use the language attribute of the tag in html code. This was deprecated with HTML 4.0 Specification in 1997 before it became a standard. browserspy.dk has this code:


<script language="javascript1.4">
//<![CDATA[
    var ver14 = 1
//]]>
</script>
<script type="text/javascript">
//<![CDATA[
    var ver14;
    (ver14) ? document.writeln("Supported") : document.writeln("Not supported");
//]]>
</script>

Firefox reads <script language="javascript1.4">. It knows the language javascript1.4. It passes the script to the Javascript engine SpiderMonkey. //<![CDATA[ and //]]> are there for automated verification of the HTML code. They are ignored by the engine because they have a double slash in front. The engine sets the variable ver14 to 1. Firefox also knows <script type="text/javascript"> and passes the second script. If ver14 was set to 1 this does write Supported. else it writes Not supported.

Firefox would not know javascript1.6 or asdfasdfasdf.... It would not pass the first script. The variable would not be set to 1. The second script would write Not supported.

Why is javascript1.5 the last one? I do not know. They might have decided to.

Today Javascript is supported by implementing features of the standard. Mozilla says:

"JavaScript 1.8.5 [...] shipped in Firefox 4. Released July 27, 2010. [...] This is the last JavaScript version." - https:/ /developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript (05.12.2016)

and

"[Today] the standard for JavaScript is ECMAScript [2016, the 7th]. As of 2012, all modern browsers fully support ECMAScript 5.1. [...]" - https:/ /developer.mozilla.org/en-US/docs/Web/JavaScript (05.12.2016)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.