2013-06-28 23 views
18

Ich entwerfe eine Seite, wo es problematisch wäre, wenn Makros frei laufen könnten.Kann Javascript einen Tastenklick simulieren?

Ich habe an einen Weg gedacht, ein Makro zu stoppen, indem man die HTTP-Anfragen von einem Knopfklick simuliert, aber das wäre vergeblich, wenn sie Javascript-Skripte einfügen könnten, die einfach auf die Schaltfläche klicken und wie ein normaler Benutzer fortfahren würden .

Durch die Simulation eines Knopfes klicken, ich meine, der Knopf wird gedrückt und das Formular, in dem der Knopf ist, läuft mit dem php Code, der damit verbunden ist.

Logic sagt mir Javascript kann dies tun, aber ich würde gerne wissen, danke für jede Eingabe!

~ Andrew

+0

Was meinst du mit Makro, meinst du, Javascript-Code in die Formulare injizieren? Oder ist [dies] (http://blog.creativeitp.com/posts-and-articles/javascript/javascript-injection-form-editing/) was meinst du –

+0

Ja, wenn jemand mein eigenes Javascript zu meiner Website hinzugefügt hat, was könnte simulieren Sie eine Taste auf meiner Website gedrückt wird. Ich würde gerne wissen, ob sie es können (können). – AndrewB

+1

Sie können immer JavaScript einfügen, um mit Ihrer Seite etwas zu tun, einschließlich des Sendens von http-Anfragen. Du kannst es auf keinen Fall vermeiden. –

Antwort

36

Eine Schaltfläche wird möglicherweise immer programmgesteuert geklickt. Zum Beispiel können Sie eine Seite mit Form wie diese:

<form> 
    <input type="text" /> 
    <button>Do something</button> 
    <input type="submit"> 
</form> 

als es möglich ist, nur Debug-cosole zu öffnen und

document.getElementsByTagName('button')[0].click(); 

eingeben, auf die Schaltfläche klicken wird, oder

document.getElementsByTagName('input')[1].click(); 

Klicken Sie auf die Schaltfläche zum Absenden des Formulars oder einfach

document.forms[0].submit(); 

, um das Formular ohne Klicken auf die Schaltfläche zu senden.

Es gibt keine Möglichkeit zu verhindern, dass Benutzer JavaScript-Code auf dem Client mastering. Sie müssen eine Überprüfung auf der Serverseite hinzufügen, um unerwünschte Benutzeraktionen zu verhindern.

+1

Danke für die knappe Antwort, schätze die Mühe! – AndrewB

+0

Ja, tolle Antwort. – Yster

2

das einzige, was Sie tun können, ist die Anforderung auf dem Server zu validieren.

Sobald Sie die Seite an einen Client übergeben haben, haben Sie keine technische Kontrolle darüber, wie sie verwendet werden könnte.

Was Sie zum Beispiel tun, from:

Sagen Sie bitte Javascript Spiel machen. Sie verwenden AJAX, um das Ergebnis des Players an den Server für die Protokollierung zu senden. Nach dem Betrachten des Skripts könnte ein böswilliger Benutzer Ihren AJAX-Code ausführen, um eine Punktzahl von 1.000.000 zu senden, auch wenn sie nur 5.000 verdient haben.

Sie können nicht verhindern, dass dies auf der JavaScript-Seite geschieht. Es sollte jedoch eine Möglichkeit geben, AJAX-Anfragen auf der Server-Seite zu authentifizieren, da Sie möglicherweise ein Sicherheits-Token an Javascript weitergeben können, das ein Hacker nicht erhalten konnte.

+0

Ich dachte daran, eine serverseitige Variable zu haben, die sich so oft ändert. Die Variable ist das Salz für die Eingabe des Benutzers, im Beispiel Ihrer Bewertung haben sie 1000 Punkte, verwenden die sha512-Verschlüsselung, salzen diese Zahl mit einer serverseitigen Variablen und wissen dann, was zu erwarten ist. Wenn der Code korrekt ist, aktualisieren Sie die Bewertung, sonst nicht. Offensichtlich, wenn dies alles PHP-Seite ist, könnten sie nur auf den Button klicken, um ihre Punktzahl einzureichen, nicht die Punktzahl zu ändern. Aber ich möchte, dass es unmöglich ist, sogar ihre Punktzahl abzugeben (in diesem Fall) – AndrewB

+0

Ich denke, ich bin ein wenig zu hoffnungsvoll hier, ich werde mich mit CAPTCHAS begnügen müssen, obwohl ich sie um jeden Preis vermeiden wollte: P Ich gebe dir aber die Daumen für die Anstrengung! – AndrewB

+0

Wenn ich mit mobilen Apps unterwegs bin benutze ich manchmal ssh Bibliotheken, um Datenübertragungen zu verschlüsseln und zu sichern, vielleicht kann etwas Ähnliches für deinen Fall getan werden ... –

Verwandte Themen