Wie testen ob Javascript aktiviert ist
Andreas
- html
Hallo!
Das beschäftigt mich schon länger, aber irgendwie finde ich keine Lösung. Klar, ich kann auf einer Webseite in einem Javascript eine Funktion ausführen, wenns klappt ist es halt aktiviert, sonst nicht.
Aber ich will diese Information an den Server übermitteln, wie mache ich das? Ich hatte überlegt evtl. einen Link, und per Javscript einen Parameter anhängen, oder einen Link der bei aktiviertem Javascript eine andere Seite aufruft... aber bei beidem habe ich keinen Schimmer ob/wie es funktioniert.
Und nochwas sicherheitstechnisches:
Kann man mit Hilfe von Javascript Formular-Daten evtl. so übermitteln, das man es nicht so einfach mit einem brute-force Script nachstellen kann? HTML kann man ja sehr leicht nachstellen, aber Javascript nicht unbedingt. Gibt es da irgendwelche Möglichkeiten?
Ich will mich ganz bewußt von aktiviertem Javascipt abhängig machen!
Viele Grüße
Andreas
Aber ich will diese Information an den Server übermitteln, wie mache ich das?
Nicht wirklich möglich.
Und nochwas sicherheitstechnisches:
Kann man mit Hilfe von Javascript Formular-Daten evtl. so übermitteln, das man es nicht so einfach mit einem brute-force Script nachstellen kann?
Ich habe keine Ahnung, was du hier meinst, ich sage aber einfach mal nein.
Hallo!
Aber ich will diese Information an den Server übermitteln, wie mache ich das?
Nicht wirklich möglich.
Doch, nur nicht direkt, aber indirekt. Ich habe inzwischen eine Möglichkeit gefunden, aber wie Ihr alle wißt bin ich kein großer Javascript-Freund und schon gar kein großer Könner ;-)
<a target="_top" href="http://www.teamone.de">TeamOne</a>
<script type="text/javascript">
<!--
document.links[0].href="test.php";
//-->
</script>
Aber das doofe, ich kann den Link nur über die Numer ansprechen, alles andere will nicht klappen. ich habe dem link einen Namen, eine ID zugewiesen und versucht über
document.links["Name"].href="test.php";
anzusprechen, was soll ich sagen, kläglich gescheitert. Selbst wenn ich das Javascript in den Head-Bereich lege gehts nicht mehr?!?!
Vermutlich muß ich es in eine Funktion packen und bei onload() starten, ändert aber nichts am eigentlichen Problem.
Leider ändert sich die Nummer des Links schonmal, und dann stehe ich da - wenn ich nicht dran denke.
Aber wenn jemand ne Idee mit einem Namen hat, wie sieht das aus mit Browserkompatibilität?
Und nochwas sicherheitstechnisches:
Kann man mit Hilfe von Javascript Formular-Daten evtl. so übermitteln, das man es nicht so einfach mit einem brute-force Script nachstellen kann?
Ich habe keine Ahnung, was du hier meinst, ich sage aber einfach mal nein.
Man kann mit Javascript recht erstaunliche Sachen machen, da dachte ich vielleicht auch Formulardaten versenden, aber ich vermute das das keinen Vorteil bringt gegenüber einem "normalen" Formular.
Grüße
Andreas
Hallo, Andreas,
Kann man mit Hilfe von Javascript Formular-Daten evtl. so übermitteln, das man es nicht so einfach mit einem brute-force Script nachstellen kann?
Ich habe keine Ahnung, was du hier meinst, ich sage aber einfach mal nein.
Man kann mit Javascript recht erstaunliche Sachen machen, da dachte ich vielleicht auch Formulardaten versenden, aber ich vermute das das keinen Vorteil bringt gegenüber einem "normalen" Formular.
Sicherlich kannst du ein Formular per HTML erst einmal falsch vorbelegen (action-Attribut) und dann ein diffuses JavaScript, welches durch ein serverseitiges Script generiert wird und nur einmal mit einer bestimmten Session-ID funktionsfähig ist, heimlich im Hintergrund ausführen, welches dann die richtigen Parameter setzt. Oder welches in die Eingabedaten Zufallszahlen einmischt und sie siebenmal quirlt, MD5-verschlüsselt, ... und, und, und. Der Punkt ist aber, dass der Aufwand im Vergleich zum Nutzen unverhältnismäßig hoch ist und JavaScript mag eigentlich niemand und ohne sollte es trotzdem funktionieren.
Kurz gesagt: auf diese Art ist es sinnlos, denn im Endeffekt wird ein GET- oder POST-Request gesendet, den man irgendwie reproduzieren kann. Mit JavaScript-Spielereien hält man vielleicht Kiddies ab, aber sehr wirkungsvoll gegen ernsthafte Einbruchsversuche sind solche clientseitigen Versuche nicht.
Selbst wenn du IP-Sperren und sonstige Möglichkeiten nutzt, um die Anzahl der möglichen Loginversuche einzuschränken, ist Brute Force immer noch möglich, die Frage ist, wie man es erschweren kann. Man könnte alle Versuche in einer Datenbank loggen und den Account nach $X Loginversuchen sperren, worauf der Benutzer das Passwort nur noch per Masterpasswort per Email anfordern kann.
Oder man fügt lustige sleep()s in die Skripte ein, oder lässt pro Minute nur einen Loginversuch zu - damit kannst du Brute Force-Attacken serverseitig lahmlegen oder zumindest enorm erschweren.
Zumindest wirst du es nicht "einfach" mit JavaScript realisieren können, nur weil man damit viele andere "recht erstaunliche Sachen" machen kann. Irgendwann würde jemand auf die Funktionsweise kommen und das Script, welches im Klartext verfügbar ist, durchschauen.
Wenn du wirklich schützenswerte Daten hast, dann stelle sie nicht ins weltweite Netz, oder gib deinen Benutzern schwer knackbare hexakryptische Passwörter.
Mathias
Hallo!
Dau hast vollkommen Recht, war auch nur so eine Spinnerei von mir, die Idee war einfach das Bruteforce-Tools/Scirpte und ähnliches kein Javascript können, udn wenn man irgendwei dem Server "un-nachbildbar" diese Informatiuon das der Client Javascript kann übermittlen könnte, wie auch immer, hätte man einen zusätzlichen Schutz.
Wie gesagt würde ich mich ganz bewußt absichtlich von Javascript abhängig machen.
Aber Du hast Recht, es ist ind bleibt http, da kann man einfach alles nachstellen, man könnte das ganze höchstens ein wenig verkomplizieren.
Serverseitig sichere ich mich schon, ist auch nicht so das ich irgendwelche Staatsgeheimnisse hüte, war halt nur mal so eine Idee, weil ich sowas auch mal von Michael Schröpl gehört hatte in diesem Zusammenhang, der sich IMHO sehr gut auskennt.
ich zitiere mal "kurz" aus besagtem, Posting http://forum.de.selfhtml.org/archiv/2002/5/12599/#m70743:
Wenn dieses Programm dann auch noch mit Deinen womöglich
JavaScript enthaltenden Seiten fertig werden muß, hast Du eine
nette zusätzliche Hürde aufgebaut, die nicht mit brute force,
sondern nur mit eigener Arbeit zu überwinden ist.
Warum JavaScript? In welcher Form kann mir hier Javascript etwas
bringen? Das verstehe ich nicht - als einziges sehe ich hier eine
Möglichkeit daran Besucher mit aktiviertem und deaktiviertem
Javascript zu unterscheiden? Meinst du das oder bin ich hier am
falschen Dampfer?
Wenn ich als Angreifer mit dem Erraten von URLs zwar Deine Session-ID
"brechen" kann, aber zusätzlich bestimmte Felder des HTTP-Headers auch
noch so senden muß, wie das der "belauschte" Browser tut, meiner aber
nicht kann, wäre meine nächste Idee, ein Programm wie meinen HTTP-
Tracer zu nehmen, also einen Roboter als HTTP-Client. Diesen so zu
schreiben, daß er HTTP bedienen kann, ist verhältnismäßig einfach -
wenn Deine Requests aber nur in einem Client korrekt funktionieren
würden, der JavaScript unterstützt, müßte ich einen kompletten Browser
schreiben!
Das soll nun keine Anregung sein, unbedingt JavaScript zu verwenden -
nur wenn Du das ohnehin schon tun würdest (wieso auch immer), wäre das
für den Angreifer eine zusätzliche Hürde, falls er nicht mit einem nor-
malen Browser angreifen kann, sondern einen "Eigenbau" braucht.
Ich verwende zwar Javascript (Mouseover-Grafiken),
allerdings funktioniert die Seite auch ohne
Javascript.
Hilft mir das dann was, weil ich dann vom HTTP-
Tracer verlange sich irgendwie zu deklarieren -
also ich verwende Javascript oder ich verwende es
nicht?
Nein. Wenn Du JavaScript nur für "nice to have"
verwendest, wird der Robot problemlos "korrekte"
HTTP-Requests erzeugen können.
Würdest Du beispielsweise mit JavaScript URL-Teile
in Links bzw. Formularen manipulieren, dann sähe das
anders aus.
Frage Dich einfach mal, ob ein Links-Checker durch Deinen Shop-Dialog hindurchlaufen könnte oder nicht.
Grüße
Andreas
Hallo!
Das beschäftigt mich schon länger, aber irgendwie finde ich keine Lösung. Klar, ich kann auf einer Webseite in einem Javascript eine Funktion ausführen, wenns klappt ist es halt aktiviert, sonst nicht.
Aber ich will diese Information an den Server übermitteln, wie mache ich das? Ich hatte überlegt evtl. einen Link, und per Javscript einen Parameter anhängen, oder einen Link der bei aktiviertem Javascript eine andere Seite aufruft... aber bei beidem habe ich keinen Schimmer ob/wie es funktioniert.
Und nochwas sicherheitstechnisches:
Kann man mit Hilfe von Javascript Formular-Daten evtl. so übermitteln, das man es nicht so einfach mit einem brute-force Script nachstellen kann? HTML kann man ja sehr leicht nachstellen, aber Javascript nicht unbedingt. Gibt es da irgendwelche Möglichkeiten?
Ich will mich ganz bewußt von aktiviertem Javascipt abhängig machen!
<script type="text/javascript">
window.location.href="http://www.DeineDomain.de/DeineSeite?Script=vorhanden";
</script>
<meta http-equiv="refresh" content="3; http://http://www.DeineDomain.de/DeineSeite?Script=nichtvorhanden">
in den Head.
Andreas
Hi!
<script type="text/javascript">
window.location.href="http://www.DeineDomain.de/DeineSeite?Script=vorhanden";
</script>
<meta http-equiv="refresh" content="3; http://http://www.DeineDomain.de/DeineSeite?Script=nichtvorhanden">
Ja, das sollte funktionieren, nur wollte ich erstmal keine automatische Weiterleitung, außerdem kann man meta-refresh deaktivieren, aber da könnte ich ja dann einen Link machen und wüßte das Javascript deaktiviert ist.
Danke!
Grüße
Andreas
HAllo,
<script type="text/javascript">
window.location.href="http://www.DeineDomain.de/DeineSeite?Script=vorhanden";
</script>
<meta http-equiv="refresh" content="3; http://http://www.DeineDomain.de/DeineSeite?Script=nichtvorhanden">
in den Head.
Vielleicht besser:
<script type="text/javascript">
var x = new Image();
x.src = "http://www.DeineDomain.de/DeineSeite?Script=vorhanden";
</script>
<noscript>
<img src="http://www.DeineDomain.de/DeineSeite?Script=nichtvorhanden" width="2" height="2">
</noscript>
irgend wo in den Body.
By
Reinhard
Hi Andreas,
das mit dem Anhängen von Parametern ist gar keine so schlechte Idee. Am besten du gestaltest alle deine Links auf diese Weise:
<a href="seite.html" onclick="window.location.href='seite.html?javascript=true';return false;"></a>
Über ein Perl-Script kannst du nun die Parameter auslesen... ...sofern du Perl kannst!
Dies ist wohl die einfachste Möglichkeit, die mir jetzt so auf die Schnelle eingefallen ist!
Da ein Ansprechen des einzelnen Links nicht möglich ist, so dass du das was innerhalb von href steht nicht automatisch auslesen kannst! Leider...
MfG Sebastian
Hallo!
<a href="seite.html" onclick="window.location.href='seite.html?javascript=true';return false;"></a>
Du wirst es nicht glauben, aber das war mein erster Versuch, nur funktioniert _das_ so nicht, zumindest nicht im IE 6 und NN 7.
Es funktioniert nur wie folgt:
<a href="test.php">TeamOne</a>
<script type="text/javascript">
<!--
document.links[0].href="test.php?javascript=on";
//-->
</script>
Ich schaffe es weder das in den Link selbst einzubauen, noch den Link über einen Namen oder ID anzusprechen. Vielleicht hast Du noch ne Idee, Javascript ist und bleibt ein Mysterium für mich ;-)
Viele Grüße
Andreas
Hallo!
<a href="seite.html" onclick="window.location.href='seite.html?javascript=true';return false;"></a>
Du wirst es nicht glauben, aber das war mein erster Versuch, nur funktioniert _das_ so nicht, zumindest nicht im IE 6 und NN 7.
Glaube ich nicht. Du hast sicherlich "return false" vergessen. Dann wird der href-Link nämlich auch ausgeführt, und zwar hinterher - er überschreibt also den vorhergehenden Javascript-Link.
Es funktioniert nur wie folgt:
Naja, Möglichkeiten gibt es reichlich. Beispielsweise auch diese hier:
<script type="text/javascript">
document.write('<a href="test.php?js=on">Der Link</a>');
</script>
<noscript>
<a href="text.php?js=off">Der Link</a>
<noscript>
<a href="test.php">TeamOne</a>
<script type="text/javascript">
<!--
document.links[0].href="test.php?javascript=on";
//-->
</script>
Diese Variante in schöner wäre so:
<a href="test.php" onclick="this.href=this.href+'?js=on';">Link</a>
Alles ungetestet, aber mit Vertrauen darin, dass es so funktionieren müsste. :)
- Sven Rautenberg