2010-12-01 10 views
0

Ich habe eine Website, powered by MODx, die um ein Formular zentriert ist. Der Zugriff auf die Webseite mit dem Formular ist auf registrierte Mitglieder beschränkt (die von MODx bearbeitet werden). Der Benutzer füllt ein paar Texteinträge aus, wählt eine Datei zum Hochladen aus und trifft dann auf submit. Die angegebene Aktion ist ein submit.py-CGI-Skript unter/cgi-bin, das die übermittelten Informationen protokolliert und die Datei speichert und perfekt ausführt.Verhindern Sie den Zugriff auf CGI-Skripte basierend auf der Quelle des HTML-Formulars

Die einzige Sorge, die ich habe ist, dass jeden Form (scheinbar), wenn sie die richtige URL für das <form> action-Attribut angeben zu können, scheint ihre Form zu meinem CGI-Skript verknüpfen. Was bedeutet, dass sie die folgenden auf ihre eigene Seite schreiben:

<form action="http://my-site.com/cgi-bin/submit.py"> 
    <!-- blah blah blah --> 
</form> 

und die Daten werden gesendet, um meine CGI-Form und verarbeitet (unerwünschtes Verhalten).

Meine Frage ist dies: Gibt es eine Möglichkeit, die Ausführung des Skripts basierend auf dem HTML-Formular, das die Daten gesendet hat, zu beschränken? Fehle ich etwas wirklich offensichtlich?

Ich habe online gesucht und eine etwas verwandte Angelegenheit von CSRF gefunden, aber wenn es eine Möglichkeit gibt, Token-Authentifizierung zu verhindern, die nicht autorisierte Verwendung des CGI-Skripts, würde ich es gerne hören.

Antwort

0

Sie können ein Einmal-Token verwenden, das mit Ihrem Formular gesendet werden muss, um sicherzustellen, dass es gültig ist (dies ist, was Sie erwähnt haben).

Obwohl dies auch erfasst und gesendet werden konnte.

Die Überprüfung der Referrer ist nicht sinnvoll, weil es leicht gefälscht ist oder nicht vorhanden ist (einige Proxys filtern es).

Kurz gesagt, ohne den Token zu verwenden, um es zu mildern, sind Sie in Schwierigkeiten. Außer alle anderen im Internet hat dieses Problem :)

Verwandte Themen