Cheatah: Was ist an diesem Script falsch?

Beitrag lesen

Hi,

document[nlx].document.bgColor existiert.
ist allerdings noch kompakter als .layers[..

ja; wobei auch letzteres ohne eval() funktioniert.

wenn sich das Konzept etwas während der Entwicklung ändert, kommt ausser Unkenntnis auch schonmal der Kostenfaktor in Frage, der kurzfristige oder selbst der kursichtige Blick auf rasche Liquidität wird immer wieder mal den Vorrang haben.

Ja, stimmt... Kurzsichtigkeit sollte meiner Liste auch noch hinzugefügt werden.

Je nach Browser ist jener document.title auch (vom User!) schreibbar; Du hast also nicht den leisesten Schimmer, was hiernach passieren mag. Missbrauch ist möglich.
der Missbrauch eine andere URL anzusteuern?

Nun, dass man mit JavaScript nicht wirklich schlimme Dinge tun kann, habe ich bereits erwähnt. Allerdings ist durchaus denkbar, dass ein findiger Hacker auf diese Weise einen Weg findet, die Same Origin Policy zu umgehen, und somit Einblicke in das Userverhalten auf _Deiner_ Site bekommt - oder ähnliches. Ich bin kein Hacker und kann daher nur befürchten, in welche Richtung es gehen kann.

trotzdem möchte ich diese Möglichkeit nicht missen.

Deshalb gibt es eval() in fast jeder Sprache - man sollte nur bei _jeder_ _einzelnen_ Verwendung äußerst gründlich geprüft haben, dass es _wirklich_ keine andere sinnvolle Alternative gibt. Alles andere wäre leichtfertig und ein u.U. hohes Risiko.

Sicherheit ist kein Ziel, sondern ein Weg. Man muss ihn stetig gehen.

Aus welchem Grund sollte in einem Title eigentlich etwas stehen, dass man als URL-Basis verwenden kann?
es war die kompakteste Möglichkeit für ein Frame verschiedene gleiche Sprungziele bei verschiedenen alternativen Dateien zu ermöglichen.

In anderen Frames lassen sich Variablen unterbringen, welche dafür verwendet werden können, ohne mögliche Seiteneffekte zu riskieren.

ich müsste da nochmal testen was es sollte, wie gesagt nicht dokumentiert und schon was älter,

Bei solchen Gelegenheiten sieht man, wie wichtig eine gute Dokumentation ist ;-)

Aber ich hab noch was gefunden, soll jedoch kein Beispiel sein dass es ohne eval nicht ginge

Wie kommst Du denn darauf?

if(document.layers)au="sz"; if(document.all)au="all.sz.style"; if(document.getElementById)au="getElementById('sz').style";

if (document.layers) au = document.sz;
if (document.all) au = document.all.sz.style;
if (document.getElementById) au = document.getElementById('sz').style;
...
au.left = abo

Geht meiner Ansicht nach ziemlich hervorragend.

Oder geht es sogar ohne eval noch kürzer?

Dem ist in aller Regel so. Kürzer, übersichtlicher, wartbarer, sicherer.

Cheatah