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.)

5
  • 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, 2016 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). Nov 29, 2016 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, 2016 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? Nov 30, 2016 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, 2016 at 2:25

1 Answer 1

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)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .