Moin!
Genau hier (und an vielen weiteren Stellen) schlägt allerdings ein Problem im Zusammenhang mit Bookmarklets zu: Du hast nur etwa 500 Zeichen für deinen Code zur Verfügung. Diese experimentell mit einem Internet Explorer ermittelte Tatsache wollte ich nur noch einmal ins Gedächtnis rufen.
Das ist kein Hindernis. Wie im ersten Posting beschrieben: Ein Function-Objekt erzeugen, den Code aus dem Internet reinladen und ausführen - solche Dinger sind die Gefahr.
Und wo ist die Klasse, von der du das Objekt erzeugst, definiert? Du musst deinen Code in 500 Zeichen unterbringen, da führt kein Weg vorbei. OK, es ist prinzipiell auch platzsparend möglich:
javascript:document.write('<script type="text/javascript" src="http://www.robertbienert.de/scripts/forms.js"></script>'); alert(pruefeLeerstring(''))
Das sind so 150 Zeichen und funktioneren auf meinem iBook allerdings nur im Firefox sowie wie dem Internet Explorer 5.2, die meisten Mac-User werden allerdings den (hiergegen immunen) Safari oder Camino benutzen.
Ohne Internetzugriff sind sie überschaubar. Sieh Dir mal den großen Suchhelfer von bookmarklet.com an; der macht genau das und als ich es sah, gingen bei mir alle roten Lampen an.
Könntest du mir bitte einen Link angeben, ich finde auf dieser Seite nichts außer Werbelinks.
Aber falls dein kreiertes Szenario an Bedrohlichkeit zunehmen sollte, wird es dann die Möglichkeit geben, in vernünftigen Browsern Javascripten den Zugriff auf Formularfelder zu verbieten, so wie man heutzutage schon das Verändern der Statuszeile unterbinden kann.
Ich glaube, einfacher wäres es, wenn das javascript: - Protokoll im URL-Eingabefenster, in Bookmarks und evtl. in user-css für https-Seiten unterbunden würde. Dann wäre Codeinjektion m.A. nicht mehr möglich.
Es gibt genug Seiten, die zwar per HTTPS übertragen werden, aber Daten (z.B. Bilder) ungeschützt anfordern und erhalten. Solche Zonenmodelle sind in der Praxis häufig Schwachstellen, wie die Vergangenheit gezeigt hat. Außerdem gibt es für Codeinjektion mit ähnlich schwerwiegenden Folgen immer noch Cross-Site-Scripting, dagegen bist du als Seitenbesucher mit aktiviertem JavaScript wirklich machtlos, weil du im Gegensatz zu einem Bookmarklet erst das Ergebnis und dann den Code siehst.
Viele Grüße,
Robert