Cheatah: DRINGEND: Gibt es JavaScript-Sicherheitsprobleme?

Beitrag lesen

Hi,

Ich bin designerin und stehe gerade vor der Produktion einer großen Seite.
Dafür arbeite ich mit Programmieren zusammen, die mir sagen, JS
könne aus Sicherheitsprobleme nicht benutzt werden.

das ist IMHO eine veraltete Ansicht. In den Anfangszeiten gab es sicherlich Probleme, aber mittlerweile sind die Vorkehrungen so streng, daß man manchmal für absolut "ungefährliche" Aktionen (auslesen der URL eines anderen Frames) Umwege finden muß oder es sogar gar nicht machen kann. Siehe dazu auch meine Antwort auf Kai Lehmann.

Ich selber setze JS ein und hätte gerne Informationen über:

a) Wieviele haben JS deaktiviert?

Die Statistik meiner Homepage sagt:
7.46% benutzen kein JavaScript bzw. haben es deaktiviert. Vom Rest haben
53.31% einen JavaScript 1.2 fähigen Browser,
41.14% einen JavaScript 1.3 fähigen Browser,
3.17% einen JavaScript 1.0 fähigen Browser,
2.34% einen JavaScript 1.1 fähigen Browser.
Diese Daten sind nicht unbedingt repräsentativ, dürften aber so ungefähr hinhauen :-)

b) Inwieweit ist JS nicht inzwischen absoluter Standart?

Seit Netscape 2 und MSIE 3 ist JavaScript "rudimentär vorhanden". Halbwegs bis ziemlich ausgereift würde ich es ab NS 3 und MSIE 4 nennen. Auch Opera beherrscht JavaScript, allerdings bin ich mir nicht über das Ausmaß im Klaren.

Sagen wir es so: Die neuen Browser beherrschen es. Wenn man es vernünftig programmiert ist nichts dagegen zu sagen - sofern die Homepage auch ohne JS absolut funktionstüchtig ist!

Mit "vernünftig programmieren" meine ich, daß die richtige Version angegeben wird (<script language="JavaScript1.2">), der Scriptteil auskommentiert wird, ggf. ein <noscript>-Bereich erstellt wird, und vor allem daß eventuell(!) nicht vorhandene Objekte geschickt abgefragt werden. Beispiel:

In einem Frameset soll in einem Nachbarframe eine Funktion test() ausgeführt werden. Statt einfach
parent.framename.test()
zu schreiben, benutzt man:
if (parent.framename) if (parent.framename.test) parent.framename.test();

Nicht vergessen das Semikolon am Ende :-)
Die Prüfung von if (parent) kann man sich übrigens sparen, weil parent im Zweifelsfall identisch mit self ist, sprich es ist immer vorhanden.

Ich hoffe das war jetzt nicht zu verwirrend, wenn doch - nachfragen :-)

Cheatah