Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Internetverbindung "verstecken"? (https://www.delphipraxis.net/67200-internetverbindung-verstecken.html)

Angel4585 11. Apr 2006 08:02


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:

mkinzler 11. Apr 2006 08:11

Re: Internetverbindung "verstecken"?
 
Wenn jemand den Netverkehr snifft (z.B. mit Ethereal), sieht er den Skriptaufruf inklusive Parameter. Verwendest du SSL?

Angel4585 11. Apr 2006 08:36

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.

Evian 11. Apr 2006 08:42

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?!

Angel4585 11. Apr 2006 08:45

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.

mkinzler 11. Apr 2006 08:47

Re: Internetverbindung "verstecken"?
 
Zitat:

und das "Feld=Wert" soll man eben nicht bekommen können.
Dann verwende POST und SSL

Angel4585 11. Apr 2006 08:50

Re: Internetverbindung "verstecken"?
 
und wie geht das? :gruebel:

mkinzler 11. Apr 2006 08:57

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.

Angel4585 11. Apr 2006 09:06

Re: Internetverbindung "verstecken"?
 
einfach https anstatt http?

Zitat:

Zitat von mkinzler
Du übergibst die Werte über GET. Ich würde die Datenübgabe per POST machen, dann sind die Parameter nicht mehr Teil der URL.

ich mach das nicht per "Get", wie du oben siehst mach ich das mit "Post"

mkinzler 11. Apr 2006 09:12

Re: Internetverbindung "verstecken"?
 
Hab mich darauf bezogen:
Zitat:

http://www.zieladresse.de/skript.php?Feld=Wert"
So sieht eine Übergabe per GET aus, bei POST wird die gesamte Seite zurückgesendet.

Angel4585 11. Apr 2006 09:20

Re: Internetverbindung "verstecken"?
 
Moment: Wenn ich das per Post mache ist es schon verschlüsselt/versteckt oder hab ich das jetzt falsch verstanden?

mquadrat 11. Apr 2006 09:21

Re: Internetverbindung "verstecken"?
 
Es ist nicht verschlüsselt, es steht nur nicht in der URL.. Zum Verschlüsseln musst du SSL nehmen

Evian 11. Apr 2006 09:30

Re: Internetverbindung "verstecken"?
 
Zitat:

Zitat von Angel4585
ich mach das nicht per "Get", wie du oben siehst mach ich das mit "Post"

Also ich habe eher nur rudimentär Ahnung von PHP, aber muss man nicht die PHP-Datei erstmal geladen haben, bevor man mit POST Variablen übergeben kann?! Ich meine, er hat doch noch gar nichts geladen, er hat doch nur die URL und die Parameter, also kann er doch gar nichts anderes machen, als die Parameter in der URL mit zu übergeben. (Bitte berichtigen, wenn das Blödsinn ist)

@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.

jfheins 11. Apr 2006 09:37

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 ... ;)

Angel4585 11. Apr 2006 09:39

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.

Evian 11. Apr 2006 09:41

Re: Internetverbindung "verstecken"?
 
Zitat:

Zitat von jfheins
Es ist Blödsinn :mrgreen:

..och menno! :)

Zitat:

Zitat von jfheins
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 ... ;)

@Angel: Wenn wir wüssten, was Du genau machen willst, also was für Informationen Du an das Script übergeben willst, dann könnten wir Dir sicher sagen, wie man das Sicherer machen könnte.

mquadrat 11. Apr 2006 09:41

Re: Internetverbindung "verstecken"?
 
Zitat:

Zitat von Angel4585
ja und muss ich die daten dazu einfach nur an "Https://" anstatt an http://" schicken?
Das mit der Onlineprüfung dürfte schwer werden, da ich eigentlich die Berechnungen im Programm machen will und nur die Daten übergebe.

Was macht denn dann die PHP Datei noch?

Orbmu2k 11. Apr 2006 10:02

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 ;-)

Angel4585 11. Apr 2006 10:07

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:
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;
Resultat ist dann sowas wie
Code:
0001 //Gebaeudetyp
000F //Gebaeudelevel
0003 //Gebaeudetyp
000D //Gebaeudelevel
oder wenn z.B. ein Gebaeude ausgabaut werden soll:
Delphi-Quellcode:
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;
In diesem Fall bekomm ich wenn das erfolgreich ausgeführt wurde nichts als " '' " zurück, wenns ein Fehler gibt " '1' ".

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.

jfheins 11. Apr 2006 10:29

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 ...

;)

Angel4585 11. Apr 2006 10:43

Re: Internetverbindung "verstecken"?
 
hmm.. joa.. wird wohl darauf hinauslaufen :cry: armer Server... muddu viel rechnen..

jim_raynor 11. Apr 2006 13:46

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 01:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz