2 Stimmen

Stoppen Sie gefälschte Formularübertragungen

Ich habe eine Frage zum Stoppen von gefälschten Formularübermittlungen. Wie wäre es, wenn ich mit dem $_SERVER['HTTP_REFERER'] Ich erlaube nur Eingaben in meine Formulare von meiner Website aus? Würde das helfen?! Danke!

0voto

David Conrad Punkte 14364

Referer ist leicht zu fälschen, so dass jeder Angreifer, der eine Formularübermittlung fälschen möchte, einfach auch den Referer-Header fälschen könnte. Außerdem glaube ich nicht, dass Webbrowser verpflichtet sind, den Referer-Header zu senden, so dass möglicherweise Formularbeiträge von legitimen Benutzern ausgeschlossen werden könnten.

0voto

MMM Punkte 6975

Versuchen Sie ein Captcha wie ReCaptcha . So verhindern Sie nicht nur, dass Spambots Ihre Website spammen, sondern Sie können auch nur die Personen "autorisieren", die Ihr Formular verwenden (zumindest bis zu einem gewissen Grad - sie müssen Ihr Formular laden, um das Captcha zu erhalten und dann eine Antwort zu senden).

0voto

tvanfosson Punkte 506878

HTTP-Header zu fälschen ist ziemlich einfach und sollte daher nicht für etwas verwendet werden, das strenge Sicherheitsvorkehrungen erfordert. Eine übliche Technik besteht darin, sowohl ein verschlüsseltes Cookie als auch ein passendes, verschlüsseltes Token in einer versteckten Eingabe im Formular zu senden. Das Cookie sollte ein reines HTTP-Cookie sein. Beim Absenden des Formulars wird überprüft, ob der Wert des Cookies und der Wert der versteckten Eingabe übereinstimmen. Dies hilft, seitenübergreifende Anfragefälschungen zu verhindern, da eine Anfrage an Ihre Website von einer anderen Website aus nicht erfolgreich gestellt werden kann, da entweder das Cookie (für einen MIM-Angriff) oder die versteckte Eingabe (gefälschtes Formular) fehlt. Natürlich hängt dies davon ab, dass Sie sicherstellen, dass Ihre Website ansonsten sicher ist, damit sie die Token nicht ausspähen können, um herauszufinden, was sie eingeben sollen.

Hier ist eine schöne Diskussion darüber, wie dies in ASP.NET MVC getan wird, http://blog.stevensanderson.com/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/

0voto

Your Common Sense Punkte 154708

Ohne Definition des Begriffs "Spoofing" wäre es nur leeres Gerede.

Es gibt ein Dutzend verschiedener "Spoofs", die jeweils einen anderen Schutz bieten.

Die allgemeinste Lösung ist CAPTCHA.

0voto

Rotimi Punkte 4700

Ein Vorschlag wäre die Verwendung eines Tokens. Wenn Sie eine der gängigen MVC-Architekturen verwenden, brauchen Sie sich keine Sorgen zu machen, da Spoofing verhindert wird. Wenn Sie jedoch wie ich mit einer benutzerdefinierten MVC-Architektur arbeiten, ist ein Token ein Ansatz. Prüfen Sie in Ihrer Datenbankklasse bei jeder CRUD-Funktion (CREATE, READ, UPDATE AND DELETE), ob das Token vorhanden ist, z.B. Das Token kann über md5 generiert werden.

public function save(){
if(isset($_SESSION['token']){
//proceed with saving
}else{
//kill it,
die;
}
}

Alternativ können Sie Ihre Webanwendung einfach mit diesem Cross-Site Request Forgery-Schutzkit integrieren. Ausprobieren aquí

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X