Chris11 Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 Hallo zusammen, ich suche nach einer Möglichkeit die IP Adresse des Absender-Formulares (nicht des Benutzers) herauszubekommen. -> Genauer: Die IP Adresse des Servers, von dem ein z.B. HTML Formular abgeschickt wurde. Habt Ihr eine Lösung? Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TimeOut Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 Also... Ich denke mal das du es so ungefähr meinst. Du hast Server A, welcher das Formular an den Client ausliefert. Im action-Attribut des Formulars ist nun Server B angegeben. In diesem Fall dürfte es für dich nahezu unmöglich sein, die Addresse des ursprünglichen Servers (A) herauszufinden. Dies ergibt sich einfach daraus, das die Daten direkt vom Client zum Server B geschickt werden, da es im action-Attribut ja so angegeben ist. Gegebenenfalls könntest du mal versuchen ob in einem solchen Fall der Referrer gesetzt wird, aber darauf verlassen kann man sich bei den heutigen Browsern auf keinen Fall. Eine andere Lösung wäre, das Server A in seinem Formular die Quelle per hidden-Tag angibt, aber so wie alle Userdaten ist auch das natürlich manipulierbar. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Osno11 Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 Hallo, auf den Hidden-Tag bin ich natürlich auch schon gekommen... aber ein Schutz ist das eigentlich nicht.... Inspiration war eigentlich das "sagenumwogene" Script aus Matt's Scriptarchive -> Formmail.cgi/pl. Das Perlscript bietet die Möglichkeit IP bzw. Domains anzugeben, die autorisiert sind, das Script zu verwenden: Ein kleiner Auszug: Hier die Einträge der Clients, die verarbeiten dürfen (auf IP und/oder Domainnamen Basis) # @referers allows forms to be located only on servers which are defined # # in this field. This security fix from the last version which allowed # # anyone on any server to use your FormMail script on their web site. # @referers = ('scriptarchive.com','209.196.21.3'); Hier die erste Verarbeitung sub check_url { # Localize the check_referer flag which determines if user is valid. # local($check_referer) = 0; # If a referring URL was specified, for each valid referer, make sure # # that a valid referring URL was passed to FormMail. # if ($ENV{'HTTP_REFERER'}) { foreach $referer (@referers) { if ($ENV{'HTTP_REFERER'} =~ m|https?://([^/]*)$referer|i) { $check_referer = 1; last; } } } else { $check_referer = 1; } # If the HTTP_REFERER was invalid, send back an error. # if ($check_referer != 1) { &error('bad_referer') } } Sie gehen hier also auf den Referer!?! Bin nicht besonders Perl-fest... Wie kann ich diese Information in PHP bekommen? Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Osno11 Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 <? $referer ="$HTTP_REFERER "; echo "Sie kommen von der Seite: $referer"; ?> Ungetestet: Das wird wohl die Lösung sein! Danke Dir Timeout! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TimeOut Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 http://www.php.net/manual/en/reserved.variables.php#reserved.variables.server Nutze lieber $_SERVER['HTTP_REFERER']. Die andere Variante ist veraltet, und funktioniert nur mit register_globals = on, was theoretisch eine Sicherheitslücke sein kann. Das Perl-Script geht tatsächlich über den Referer, allerdings wie gesagt, lässt sich das leicht manipulieren. Es überliegt nunmal dem Browser ob und mit welchem Eintrag er diesen Header sendet. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Osno11 Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 Danke für Deine Hinweise: Ich stimme Dir selbstverständlich vollkommen zu... der Referer ist nicht besonders sicher (aber immerhin besser, als das "hidden"- Tag in HTML;-) ). Habe jedoch folgenden Fall bei zwei Freunden gesehen, was auch letztendlich Anlass war, die Scripte umzustricken: - PHP Script verarbeitet Formular und versendet Email - beide Scripte wurden gesperrt vom Provider - beide Provider verweisen auf "formmail"! Beim nächsten Sperren kann ich dann auf die Pseudo-"Validierung" hinweisen... Nochmal Danke für Deine Hilfe! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 ...der Referer ist nicht besonders sicher (aber immerhin besser, als das "hidden"- Tag in HTML;-) ). Finde ich überhaupt nicht! Den Referer ändern (faken) ober abschalten kann eigentlich jeder, da es dafür entweder eine einfache Einstellung im Browser gibt oder es viele entsprechende Programme gibt (bzw. auch das selbstprogrammieren kein Problem ist, wenn man programmieren kann). Das ändern eines Hidden-Fields ist natürlich auch möglich, aber setz doch mehr Kenntnisse und Willen, das zu tun, vorraus. EDIT: Zu deinem "Problem": Die Skripte wurden wohl gesperrt, weil sie von irgendjemand zum spammen ausgenutzt wurden (kann mir nicht erklären, dass ein Provider einfach so Skripte checkt und evtl. sperrt) und dies auch leicht zuliesen. Wenn ein Spammer dein Skript mit Referer-Check findet, wird ihn das auch nicht davon abhalten, deinen "Trick" ebenso auszutricksen. IMHO Du solltest also nicht den Referer o.ä. prüfen, der kann ja ersten leicht gefakt werden und ist 2. ja sogar korrekt, wenn der User eine andere Lücke in deinem Skript nutzt um es zu mißbrauchen. Beschränke dein Skript lieber auf eine feste Adresse oder Domain (fix im Quelltext oder eine Configdatei, nicht über PArameter), an die es Mails nur senden kann. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Osno11 Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 ... ich stimme doch vollkommen zu! Der "Referer" ist kein besonders guter Schutz. (steht das nicht im letzten Thread?) ABER: Das Referenzprodukt (zumindest des Providers der oben genanntes Script gelöscht hat) verweist auf das Formmail aus Matt's Scriptarchive. Und dieses Script arbeitet auf Basis des Referers (siehe Quellcodeauszug oben). Du sprichst desweiteren eine Validierung durch z.B. die IP an. Wie willst Du denn "sicher" die IP überprüfen. In dem verarbeitenden Script schreibst Du die IPs rein die zulässig sind... bis hierhin verstehe ich Deine Argumentation... aber woher soll das Script die Information nehmen, wer der Absender ist? Hättest Du denn ein Stichwort zu diesem Thema, wo Du die Lösung siehst? Ich beschreibe nocheinmal kurz meine Umgebung: auf ww w.meine homepage.de liegt senden.html mit einem formular das 3 Variablen an verarbeitung.php übergibt. Der 1. Schritt soll sein zu überprüfen, wo die Anfrage herkommt (Referer) um diesen Wert mit einem festeingetragenen Wert in der verarbeitung.php zu vergleichen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Osno11 Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 EDIT: Zu deinem "Problem": Die Skripte wurden wohl gesperrt, weil sie von irgendjemand zum spammen ausgenutzt wurden (kann mir nicht erklären, dass ein Provider einfach so Skripte checkt und evtl. sperrt) und dies auch leicht zuliesen. Wenn ein Spammer dein Skript mit Referer-Check findet, wird ihn das auch nicht davon abhalten, deinen "Trick" ebenso auszutricksen. IMHO -> Das kann ich nur bestätigen. Ich denke nicht, das der Provider Sie überprüft hat... der Traffic war auffällig! Die Scripte wurden tatsächlich gelöscht! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 .. aber woher soll das Script die Information nehmen, wer der Absender ist? Hättest Du denn ein Stichwort zu diesem Thema, wo Du die Lösung siehst? Es ist mir völlig egal, wer der Absender ist. Aber das Skript von mir wäre für einen Spammer völlig uninteressant, weil ich das Skript nur an eine fixe Adresse (oder eine fixe Domain) senden lasse. Der Absender wird ja auch mithilfe deines Skriptes gefüllt, also kannst du den zum einen überprüfen, oder auch mit einem fixen Wert füllen. Alles was der Spammer mit so einem Skript machen kann ist, deine Mailbox (bzw. die zugelassene im Skript) überfluten. Aber auch das kannst du mit z.B. einen Hashwert als Hiddenfeld abfangen. Der Hashwert wird erzeugt beim generieren des Formulars und wenn die Daten vom Formular an den Server zurückkommen geprüft. Jeder aufruf des Formulars darf genau 1 Mail verschicken. (Hashwert irgendwo speichern und vor dem Mailsenden prüfen und dann inaktiv setzen oder löschen). Außerdem wird ja die Adresse des Users mitgesendet (zwangsweise, er will ja eine Antwort haben ) Und damit könntest du eine Reload-Sperre realisieren, wenn z.B. mehr als 3 Mail sin einem kurzen Zeitraum versandt werden sollen. Also Möglichkeiten sehe ich genug, ganz ohne Refererprüfung o.ä. EDIT: ... ich stimme doch vollkommen zu! Der "Referer" ist kein besonders guter Schutz. (steht das nicht im letzten Thread?) Ich meinte damit auch nur deine Aussage, dass der Referer immerhin besser als das Hiddenfeld ist. EDIT2: Außerdem ist der "Thread" alle "Posts" (oder Beiträge, um es mal einzudeutschen) hier. Also thread = alles, Posts = einzelne Beiträge. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Osno11 Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 ... dennoch möchte ich noch folgendes anmerken. Es ist mir ein leichtes eine Schleife zu bauen in der ein Formular immer wieder neu geladen wird und mit den passenden Variablen übergeben wird. Der Trick mit dem Hashwert würde dann nicht funktionieren, da der Hashwert immer wieder (auch valide) mit übergeben wird. Auch die Überprüfung der Antwortemailadresse ist selbstverständlich eine Möglichkeit. Ich gebe Dir vollkommen recht, das der Absender eine Antwort haben will. Aber der Kunde Otto Müller ist mir ziemlich egal... er kann mir in seiner Dusseligkeit auch 40 Mails schreiben, wenn er jedesmal etwas vergessen hat. Aber Spammer haben selten die gleiche (Absende-) Adresse. Die 100 % Lösung gibt es meiner Ansicht hier auch nicht... wenn man mich zumüllen möchte, dann passiert das auch! Trotzdem möchte ich mich ganz herzlich für die Hinweise bedanken... ein Paar Komponenten werde ich wohl verknüpfen (gerade das mit den Hashwerten gefällt mir) um es so schwer wie möglich zu gestalten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 Es ist mir ein leichtes eine Schleife zu bauen in der ein Formular immer wieder neu geladen wird und mit den passenden Variablen übergeben wird. Der Trick mit dem Hashwert würde dann nicht funktionieren, da der Hashwert immer wieder (auch valide) mit übergeben wird. siehe dazu meine Worte zur "Reload-Sperre" im Beitrag oben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Osno11 Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 ... um jetzt wieder alles gerade zu biegen: Ich denke, das wir grundsätzlich vom gleichen sprechen :-), aber vielleicht kann ich Dir nicht komplett folgen. Meine Zusammenfassung: - Selbstverständlich geht die Auswertung ausschliesslich an eine Emailadresse. Wie Du schon sagst -> sonst sollte man z.B. GMX nehmen - Jedes "Hiddenfeld" ist im Quellcode sichtbar. (Thema: Hashwert) Alles was sichtbar ist, kann auch umgangen werden... stimmst Du mir da zu? Oder habe ich einen Hänger? - Ich verstehe das ich die Emailadresse z.B. in einer DB ablegen kann, um zu überprüfen, ob und "wie oft" jemand in einem kurzen Zeitraum geschrieben hat... hier sehe ich keine Problematik. Bzw. hier möchte ich keine Abstriche machen. Wenn mich jemand x mal an einem Tag kontaktieren möchte, dann soll er das. - Sicher kann ich statt des Referers, der mir als URL übergeben wird, auch die IP kontrollieren. Aber wer sagt mir, das das die richtige ist? Wie würde denn die Abfrage des verarbeitenden Formulars aussehen, wenn die IP abgefragt wird? Habe ich eine Kernaussage von Dir nicht verstanden? -> ich bleibe dabei: bei den oben genanannten Ansätzen gibt es immer, wie auch beim Referer, eine Möglichkeit vorbeizukommen... oder? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 - Selbstverständlich geht die Auswertung ausschliesslich an eine Emailadresse. Wie Du schon sagst -> sonst sollte man z.B. GMX nehmen Dann sollte es ja auch nicht zu Spam kommen und dein Skript sollte keine Probleme bereiten, oder zumindest weniger. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nobse Geschrieben 10. April 2006 Teilen Geschrieben 10. April 2006 -> Genauer: Die IP Adresse des Servers, von dem ein z.B. HTML Formular abgeschickt wurde. In php: $_SERVER['SERVER_ADDR'] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 11. April 2006 Teilen Geschrieben 11. April 2006 In php: $_SERVER['SERVER_ADDR'] Damit bekommt der Server auf dem das Skript läuft nur seine eigene Adresse raus. Ob der Server auf dem das Skript läuft der richtige ist, das ist ja hier nicht das Problem... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nobse Geschrieben 11. April 2006 Teilen Geschrieben 11. April 2006 Damit bekommt der Server auf dem das Skript läuft nur seine eigene Adresse raus. Und exakt dies möchte er. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Osno11 Geschrieben 11. April 2006 Teilen Geschrieben 11. April 2006 Die IP des Servers auf dem das Skript läuft brauche ich nicht. Ein Ansatz wäre beim Formular die IP mitabzufragen und mit-zu-übergeben... Um das ganze zu beenden: Deine Hinweise, JesterDay, waren super. Einige Sachen werde ich zumindest erstmal zu Papier bringen und ggf. wegprogrammieren. Danke an alle Chris Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.