Cham-lion: http header

salut liebe leutz
hier meine bzw. euer aufgabe fürs weekend.
was ich von euch "eigentlich" will ich ein buch, eine internetseite oder eine andere art mein fehlendes wissen zu verringern.

es geht wieder einmal um ein spiel
bei diesem sollen ip header (ich hoffe das ist der richtige begriff) geändert, gefiltert etc. werden.

so soll man beim besuch einer seite (die in cgi gecodet ist) aus einem bestimmten land kommen (z.B. .co.nz für neuseeland)
wenn man jetzt allerdings einen proxy verwendet merkt das cgi dies weil man den x forward und andere headers prepariren soll.

bitte fragt euch bzw. mich nicht was das soll. was ich wissen will ist was ich lesen muss um mich darüber weitestgehend zu informieren. ein buch über cgi`s (wenn ja welches) oder andere lektüre.

hoffe man versteht was ich meine.

  1. Hallo Cham-lion,

    es geht wieder einmal um ein spiel
    bei diesem sollen ip header (ich hoffe das ist der richtige begriff) geändert, gefiltert etc. werden.

    so soll man beim besuch einer seite (die in cgi gecodet ist) aus einem bestimmten land kommen (z.B. .co.nz für neuseeland)
    wenn man jetzt allerdings einen proxy verwendet merkt das cgi dies weil man den x forward und andere headers prepariren soll.

    hm .. also so recht versteh ich das nicht bzw. du bringst da was durcheinander. Seiten werden nicht in CGI gecodet, sondern in HTML. CGI (Common Gateway Interface [glaub ich]) ist nur ein Protokoll was den Ablauf klärt wie eine Interaktion mit dem User vonstatten gehen soll. Sprinch wenn der User irgendwas anklickt oder sien daten irgendwo einträght dann wird mit Hilfe von CGI und einem entsprechenden Programm auf der Serverseite die Daten beispielsweise in eine Datenbank eingetargen. In diesem Programm kann man dann auch eine Antwortseite generieren die dann zum User (Client) geschickt wird. Zum beispiel die Betstätigung das die daten eingetragen wurden.

    Und ich glaube auch bei den IP-Headern glaub ich hast du dich getäuscht. Schreib einfach mal ohne Fachbegriffe was du meinst bzw. was du machen willst !!

    hoffe man versteht was ich meine.

    leider nicht :-(

    Bis denn ... Starbuck

    1. Hallo ihr beiden.

      es geht wieder einmal um ein spiel

      Du, Cham-lion, willst also ein Spiel programmieren. Es geht hier also um ein Spiel, nicht um die (sog.) Realität, richtig?

      bei diesem sollen ip header (ich hoffe das
      ist der richtige begriff) geändert, gefiltert etc. werden.

      Hier redest du davon, dass der Spieler die Header von IP-Paketen manipulieren soll (ich habe in meine Glaskugel geschaut).

      so soll man beim besuch einer seite (die in cgi gecodet ist)
      aus einem bestimmten land kommen (z.B. .co.nz für neuseeland)

      Der Webserver registriert, welchen Hostnamen der Client-Rechner hat.
      Bei mir ist das bspw. *.t-dialin.net. Mit einem Programm, das über das Common Gateway Interface läuft, könnte man je nach Hostname versch. Dinge machen. :)

      wenn man jetzt allerdings einen proxy verwendet merkt das cgi
      dies weil man den x forward und andere headers prepariren soll.

      Du meinst mit "ip header" wohl die Header des HTTP-Requests.
      Der "X-Forwarded-For"-Header wird von Web-Proxys gesetzt, um die Client-IP weiterzugeben (ich glaube, es gibt aber auch einen "Client-IP"-Header).
      Je nachdem ob der Zugriff über einen Proxy oder nicht erfolgt, kann demnach ein CGI-Programm Aktionen ausführen - siehe oben.

      ... und was hat das Ganze jetzt mit einem Spiel zu tun? Kannst du vielleicht irgendwie spezifizieren was du überhaupt willst? ;)

      CGI (Common Gateway Interface [glaub ich]) ist nur ein Protokoll
      was den Ablauf klärt wie eine Interaktion mit dem User vonstatten
      gehen soll.

      Bla, hier geht es um die Interaktion des Webservers (HTTP daemon) mit externen Programmen. Der Webserver führt ein externes Programm aus, um bspw. dynamische Seiten zu erzeugen - z.B. den Perl- oder PHP-Interpreter.

      Sprinch wenn der User irgendwas anklickt oder sien
      daten irgendwo einträght dann wird mit Hilfe von CGI
      und einem entsprechenden Programm auf der Serverseite die Daten
      beispielsweise in eine Datenbank eingetargen.

      Jein. CGI definiert, wie die Kommunikation und die Datenübergabe zwischen "Programm auf der Serverseite" und dem HTTPd abläuft.

      In diesem Programm kann man dann auch eine Antwortseite
      generieren die dann zum User (Client) geschickt wird.
      Zum beispiel die Betstätigung das die daten eingetragen wurden.

      Falsch ist das nicht, aber so unsauber ausgedrückt. ;) "In diesem Programm" kann man sehr viel machen, das Programm kann ja quasi als Script oder fertig compiliertes Programm in einer beliebigen (unterstützten) Sprache vorliegen.

      Schreib einfach mal ohne Fachbegriffe was du meinst bzw.
      was du machen willst !!

      Das wird wohl schlecht gehen. Ohne eine Fachsprache funktioniert die Kommunikation hier nicht.

      Mathias

  2. Du drückst dich in der Tat nicht sehr deutlich aus, aber wenn ich deine Andeutungen richtig verstehe, kommt folgendes Szenario heraus:

    Es gibt ein Spiel auf einem Webserver, welches nur von Surfern aus einem bestimmten Land benutzt werden soll (z.B. weil es was zu gewinnen gibt und das "Ausland" von der Teilnahme ausgeschlossen werden soll).

    Du willst nun irgendwie per CGI sicherstellen, daß nur zulässige Teilnehmer das Spiel aufrufen können, denkst dabei auch an Surfer, die möglicherweise Proxys verwenden, und fragst dich, wie du solch einen Filter am besten realisieren könntest.

    Meine Antwort dazu:

    Das geht nicht zuverlässig.

    Ein Filtern nach dem Domainnamen funktioniert garantiert nicht. Viele Provider haben große Netzwerke und sind deshalb mit ihren Internet-Zugängen in der Top-Level-Domain .net registriert. Wenn du die Teilnahme auf Neuseeland beschränken willst, würdest du alle neuseeländischen Teilnehmer ausschließen, die z.B. mit "uu.net" (einem internationalen Provider, der sicherlich auch in Neuseeland aktiv ist) surfen. Außerdem haben nicht alle Surfer auch einen Domainnamen beim Surfen, sondern sind nur mit ihrer IP-Adresse bekannt. Die dürften dann ebenfalls nicht zugreifen.

    Proxys sind ebenfalls ein Problem. Du kannst dich NICHT darauf verlassen, daß die benutzten Proxys ihr Vorhandensein in irgendeiner Weise durch zusätzliche HTTP-Header kenntlich machen.

    Relativ gut könnte man anhand der verwendeten IP-Adressen filtern (die benutzt schließlich jeder Surfer). Allerdings müßtest du dazu sämtliche IP-Blöcke (Serien von aufeinanderfolgenden IP-Adressen) feststellen, die in Neuseeland verwendet werden. Das kann zu einer ziemlichen Arbeit ausarten, weil es nicht zu erwarten ist, daß es nur 4 oder 5 Blöcke sind, sondern eher im Bereich einiger hundert bis tausend. Aus praktischen Erwägungen scheidet diese Methode also auch aus. Und sie wäre natürlich nicht fehlerfrei: User, die zufällig einen neuseeländischen Proxy benutzen, wären zugelassen, während Neuseeländer, die einen ausländischen Proxy benutzen (wie z.B. User von AOL), ausgeschlossen blieben.

    Die einfachste Methode ist immer noch, vor das Spiel eine Seite zu setzen, die erklärt, wer teilnehmen darf und wer nicht. Die Überprüfung kann dann geschehen, wenn irgendwelche Gewinne ausgeschüttet werden - bei Gewinnspielen wird man ja kaum Geld oder Sachgewinne an eine EMail-Adresse senden können, sondern man kann eine Postanschrift verlangen.

    Im übrigen ist das Internet ein internationales Netzwerk, welches (wie oben beschrieben) Länderfilter nicht vorgesehen hat.

    - Sven Rautenberg

  3. Hääää Spiel?... Website? ... naja schau dir mal an wie das HTTP Protocol funzt. Das gibt dir nen kleinen Überblick mit welchen Informationen du arbeiten kannst. Über das CGI kannst du dann Infos aus den entsprechenden Headern auslesen und weiterverarbeiten.

    World Wide Web consortium
    http://www.w3.org/

    Und so geht das mit dem HTTP... !
    [http://www.w3.org/Protocols/rfc2616/rfc2616.html]