![]() |
Internetverbindung "verstecken"?
Hallo zusammen,
ein hoffentlich kurze Frage: ich rufe per "TidHttp.Post" ein php Skript auf einem Server auf. Ist es möglich das jetzt jemand hingeht und irgendwie an die Adresse und die Parameter kommt die ich übergebe, auch wenn ich das im Hintergrund mache und nichts davon anzeige? Hintergrund: Ich progge ein kleines Onlinegame, das mit php-Skripten kommuniziert. Um zu vermeiden das jemand irgendwie diese Skripte aufruft um sich Vorteile zu verschaffen, sollte das ganze im Hintergrund stattfinden. Also falls es möglich ist diese Adressen und Parameter zu bekommen, wie kann ich das verhindern? MfG :angel: |
Re: Internetverbindung "verstecken"?
Wenn jemand den Netverkehr snifft (z.B. mit Ethereal), sieht er den Skriptaufruf inklusive Parameter. Verwendest du SSL?
|
Re: Internetverbindung "verstecken"?
Bisher sieht das bei mir so aus:
Delphi-Quellcode:
procedure DatenSenden;
var data: TIdMultiPartFormDataStream; begin data:=TIdMultiPartFormDataStream.Create; with data do AddFormField('Feld','Wert'); with IdHTTP1 do Post('http://www.zieladresse.de/skript.php',data); end; Also bis jetzt ohne SSL oder sowas. Wenn der User die URL, also einfach nur das Skript sieht ist das OK, er soll nur die Parameter in "data" nicht sehen können. |
Re: Internetverbindung "verstecken"?
Mit einem guten Sniffer(z.B. auch Eye IRIS) und ein wenig Verständniss von TCP/IP wird er auch die Parameter mitlesen können, denn auch diese schickst Du ja über deine Netzwerkkarte/ISDN-Karte/Modem. Also habe das erst vor kurzem gemacht und es ist wirklich sehr einfach. In einem nicht geswitchtem Netzwerk kann man sogar die Packete von anderen Usern mitlesen.. z.B. ihre Mails die über SMTP rausgehen.
Was sind den das für Parameter, vielleicht kann man das einfach anders lösen?! |
Re: Internetverbindung "verstecken"?
hab ich doch angegeben:
im Klartext würde die Zeile denk ich so aussehen: "http://www.zieladresse.de/skript.php?Feld=Wert" und das "Feld=Wert" soll man eben nicht bekommen können. |
Re: Internetverbindung "verstecken"?
Zitat:
|
Re: Internetverbindung "verstecken"?
und wie geht das? :gruebel:
|
Re: Internetverbindung "verstecken"?
Du übergibst die Werte über GET. Ich würde die Datenübgabe per POST machen, dann sind die Parameter nicht mehr Teil der URL. Um die Sicherheit zu erhöhen, kannst du dann von HTTP auf HTTPS (SSL), wenn es dein Webspace erlaubt.
|
Re: Internetverbindung "verstecken"?
einfach https anstatt http?
Zitat:
|
Re: Internetverbindung "verstecken"?
Hab mich darauf bezogen:
Zitat:
|
Re: Internetverbindung "verstecken"?
Moment: Wenn ich das per Post mache ist es schon verschlüsselt/versteckt oder hab ich das jetzt falsch verstanden?
|
Re: Internetverbindung "verstecken"?
Es ist nicht verschlüsselt, es steht nur nicht in der URL.. Zum Verschlüsseln musst du SSL nehmen
|
Re: Internetverbindung "verstecken"?
Zitat:
@Angel: Alternativ zu SSL kannst Du auch den Parameter vorher verschlüsseln und im PHP dann später auf dem Server wieder entschlüsseln. Die Daten können dann zwar immer noch ohne Probleme mitgelesen werden, aber es wird dann wesentlich schwieriger für den "Mitlesenden", damit etwas anzufangen. |
Re: Internetverbindung "verstecken"?
Es ist Blödsinn :mrgreen:
Es wird die URL (mit evtl. GET-Parametern) und evtl. POST-Paramtern und einigen anderen Sachen als Anfrage geschickt und vielleicht kommt was zurück ;) Das verschlüsseln kann man aber auch rausfinden ... Bessaer wäre es, online eine Prüfung einzubauen, dass man keine Vorteile kriegen kann auch wenn man alles (inkl. Parameter) weis ... ;) |
Re: Internetverbindung "verstecken"?
ja und muss ich die daten dazu einfach nur an "Https://" anstatt an http://" schicken?
Oder benötige ich dazu ein Komponente die das macht? Es gibt ja die TIdSSLIOHandlerSocketOpenSSL, muss ich die oder eine andere Kompo verwenden? @Evian: Also das mit der Übergabe funktioniert, also dass ich die Daten im Skript per "$_POST[Feld]" hole, also denk ich mal funktioniert das so mit dem Post. @jfHeins: Das mit der Onlineprüfung dürfte schwer werden, da ich eigentlich die Berechnungen im Programm machen will und nur die Daten übergebe. |
Re: Internetverbindung "verstecken"?
Zitat:
Zitat:
|
Re: Internetverbindung "verstecken"?
Zitat:
|
Re: Internetverbindung "verstecken"?
Ich habe sowas auch schon gemacht ...
Das mit dem SSL wäre ein Möglichkeit ... Ich habe allerdings die Parameter Verschlüsselt und einen zusätzlichen Prüfparameter übergeben der wiederum verschlüsselt war. Im PHP Script hab ich dann alles entschlüsselt und mit dem Prüfparamter überprüft ob die übergebenen Daten zum selben Prüfschlüssel führen. Das zu immitieren bedeutet sehr viel Aufwand und ich denke das sich den keiner bei einem kleinen Spiel macht nur um zu behumsen ;-) |
Re: Internetverbindung "verstecken"?
die Skripte(mehrere) suchen mir Daten von den Spielern zusammen die ich für die aktuelle Aktion brauche, oder speichern Daten in Dateien ab(ich wollt das ohne DB machen).
Also ich sende zum Beispiel hin:
Delphi-Quellcode:
Resultat ist dann sowas wie
procedure DatenSenden;
var data: TIdMultiPartFormDataStream; begin data:=TIdMultiPartFormDataStream.Create; with data do AddFormField('nick','Spielerx'); AddFormField('action','Gebaeude'); AddFormField('code','saljdfa');//Programmcode der im Skript geprüft wird with IdHTTP1 do gebauede:=Post('http://www.zieladresse.de/skript.php',data); end;
Code:
oder wenn z.B. ein Gebaeude ausgabaut werden soll:
0001 //Gebaeudetyp
000F //Gebaeudelevel 0003 //Gebaeudetyp 000D //Gebaeudelevel
Delphi-Quellcode:
In diesem Fall bekomm ich wenn das erfolgreich ausgeführt wurde nichts als " '' " zurück, wenns ein Fehler gibt " '1' ".
procedure DatenSenden;
var data: TIdMultiPartFormDataStream; begin data:=TIdMultiPartFormDataStream.Create; with data do AddFormField('nick','Spielerx'); AddFormField('action','Gebaeude'); AddFormField('startzeit',DateTimeToStr(Now)); AddFormField('dauer','1200'); AddFormField('code','saljdfa');//Programmcode der im Skript geprüft wird with IdHTTP1 do gebauede:=Post('http://www.zieladresse.de/skript.php',data); end; Ich könnte die vergleich schon in den Skripten machen, allerdings würd ich schon ganz gern den Server entlsaten, auch wenns nicht wirklich viel ist was da passiert. |
Re: Internetverbindung "verstecken"?
wenn du beispielsweise verhindern willst, dass er sowas sendet wie "gebäude: level 100 startzeit: jetzt ende: in 1 sek." Dann musst du wohl oder übel in das php-script eine Plausibilitätsprüfung (oder so) einbauen, dass nur noch gesendet wird " gebäude level up" und das script guckt dann, welches level, und wie lange es zu dauern hat ...
;) |
Re: Internetverbindung "verstecken"?
hmm.. joa.. wird wohl darauf hinauslaufen :cry: armer Server... muddu viel rechnen..
|
Re: Internetverbindung "verstecken"?
Aber anders kannst du manipulationen nie ausschliessen. Alle Prüfungen sollten im Server durchgeführt werden, da auch der Client selber manipuliert werden kann ...
Zum Beispiel schickt der Client nur das Kommando "Baue Gebäude A an Position 10,12". Darauf hin prüft der Server, ob genügend Geld vorhanden ist, wieviel Zeit benötigt wird, ob an der Position gebaut werden kann usw. Um den Server zu entlasten, kannst du diese Prüfungen schon im Client machen und im Fehlerfall kein Kommando schicken, aber um die Prüfung im Server wirst du nicht drumrum kommen ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz