mmofacts.com

Ausführung PHP-Datei doppelt?

gepostet vor 16 Jahre, 10 Monate von azamaroth
Hallo zusammen,
ich weiß nicht ob ihr da eine Idee habt, aber ich schildere mal mein Problem.
Bei meinem Fantasy Browsergame gibt es bei einigen Charaktere das Problem, dass Aktionen 2x ausgeführt werden. Der Held klickt zum Beispiel auf "Pflanzensuche", aber anstatt 1x die Pflanzensuche auszuführen, wird diese Pflanzensuche 2x ausgeführt, sowie jede andere Aktion auch (ist normalerweise nur 1x möglich). Ich kann jedoch keine Gemeinsamkeit dieser Accounts feststellen, es sind bis jetzt 2 bekannt, bei denen dies so ist. Eine Umbenennung hift auch nicht, könnte das vielleicht irgendein Bug in PHP sein, oder ein Problem mit Sessions?
Meiner Meinung nach wird die php-Datei also 2x aufgerufen, direkt hintereinander, und zwar immer bei diesen betroffenen Helden. Das Problem besteht auch, wenn ich mich mit diesen Accounts einlogge.
Hoffe, da hat jemand einene Tipp.
gepostet vor 16 Jahre, 10 Monate von Todi42
Ist der HTTP-Request zum Pflanzensuchen als POST oder als GET ausgeführt? Es sollte zwingend ein POST sein.
gepostet vor 16 Jahre, 10 Monate von azamaroth
Hi, nein es ist ein Get.
Aber wie mache ich das mit einem Text oder Bild-Link als POST? Ich möchte nicht unbedingt ein Formular verwenden, da es nicht so schön aussieht...
gepostet vor 16 Jahre, 10 Monate von TheUndeadable
Dreckig, aber funktionabel:
Toller Link
NACHTRAG: Achte darauf, dass der IE6 beim geschlossenen Formtag manchmal ein unsichtbares Leerzeichen/Linefeed einfügt.
gepostet vor 16 Jahre, 10 Monate von Nuky
Sollte, wie die Vorgänger schon sagten, unbedingt ein method="POST" sein.
Bei uns gabs das mal weil die ein Addon namens "LinkPreview" nutzten, das einfach alle Links vorgeladen hat.. was bei GET-Methoden natürlich die Aktion ausgelöst hat.
gepostet vor 16 Jahre, 10 Monate von TBT
eventuell das typische Windows-User-Doppelklick-Syndrom ?
wir haben das mit einem
onclick="this.style.visibility='hidden';"
gelöst - was nicht da ist, kann man nicht anklicken
gepostet vor 16 Jahre, 10 Monate von Nightflyer

was nicht da ist, kann man nicht anklicken

Stimmt nur bedingt ( WebDeveloper-Tool )
gepostet vor 16 Jahre, 10 Monate von KoMtuR
Original von azamaroth
Hi, nein es ist ein Get.
Aber wie mache ich das mit einem Text oder Bild-Link als POST? Ich möchte nicht unbedingt ein Formular verwenden, da es nicht so schön aussieht...

Bildbutton : de.selfhtml.org/html/formulare/formularbuttons.htm#grafische
Oder da hier eh schon javascript-Beispiel genannt wurden: ondblclick="return false;"
gepostet vor 16 Jahre, 10 Monate von Sarge
wenn das spiel vorsieht das eine aktion nur 1x gleichzeitig ausgeführt werden darf, so ist jedes client-seitige rumgedoktore einfach nur pfusch am bau und wird nicht den ersten findigen user überleben. Ob get oder post ist völlig irrelevant, kann ich beides genauso leicht fälschen.
Soetwas muss immer serverseitig abgefangen werden, z.b. durch vernünftiges locking o.ä.
gepostet vor 16 Jahre, 10 Monate von Todi42
Als erstes geht es aber einmal darum, nur dann eine Aktion auf dem Server auszulösen, wenn der Benutzer es möchte. Ob ein Benutzer zwei mal hinter einander "Pflanzensuche" kann oder nicht spielt da in erster Instanz keine Rolle. Weitere Beschränkungen sind natürlich immer auf dem Server zu prüfen, aber ob der Spieler einmal oder zwei mal "Pflanzensuche" machen wollte, wird der Server nicht entschreiden können.
gepostet vor 16 Jahre, 10 Monate von azamaroth
Hmm...
Was kann man denn gegen diese Art von einloggen tun?
Also ich würde jetzt bzgl. des anderen Problems alles ändern auf POST. Oder vielleicht gibt es Möglichkeiten mit AJAX (habe mich noch nicht lange damit beschäftigt, aber habe ich vor *g*)
gepostet vor 16 Jahre, 10 Monate von knalli
Original von TBT
eventuell das typische Windows-User-Doppelklick-Syndrom ?
wir haben das mit einem
onclick="this.style.visibility='hidden';"
gelöst - was nicht da ist, kann man nicht anklicken

Wenn schon javascript, dann doch eher sowas wie: Für jeden Link (mit Klasse XY) den ersten Link durchreichen (und intern im Node vermerken), und dann alle sperren. Mit jQuery & Co ist das quasi ein Einzeiler, händisch dauerts was. Weil wenn Links verschwinden (man denke zb an trägen Request), kann das mitunter komisch aussehen. Und Javascriptmarkup im HTML ist uncool
gepostet vor 16 Jahre, 10 Monate von Benj
Original von azamaroth
Hmm...
Was kann man denn gegen diese Art von einloggen tun?
Also ich würde jetzt bzgl. des anderen Problems alles ändern auf POST. Oder vielleicht gibt es Möglichkeiten mit AJAX (habe mich noch nicht lange damit beschäftigt, aber habe ich vor *g*)

Alle eingaben, die du vom user bekommst und in die Datenbank schreiben willst, musst du durch die funktion mysql_escape_string() lassen. Diese maskiert alle gefärlichen zeichen.
Es ist aber so, dass nicht nur der login betroffen ist, sondern praktisch alle deine Input boxen und checkboxen.
gepostet vor 16 Jahre, 10 Monate von KoMtuR
Original von azamaroth
Hmm...
Was kann man denn gegen diese Art von einloggen tun?
Also ich würde jetzt bzgl. des anderen Problems alles ändern auf POST. Oder vielleicht gibt es Möglichkeiten mit AJAX (habe mich noch nicht lange damit beschäftigt, aber habe ich vor *g*)

Wenn du php5 hast dann kannste mit mysqli prepared statements nutzen. sonst verfahre so wie Benj geschrieben hat, wobei prepared statements die elegantere Lösung ist (meiner Meinung nach).
gepostet vor 16 Jahre, 10 Monate von TheUndeadable
> Was kann man denn gegen diese Art von einloggen tun?
Würde ich ehrlich sein, würde ich dich darum bitten sämtliche Beiträge in diesem Thread durchzulesen und danach dein BG von Grund auf neu zu schreiben:
Sicherheit von Grund auf!
de.wikipedia.org/wiki/Race_Condition
Man programmiert nicht, wenn man sich keinerlei Gedanken über Sicherheit gemacht hat. Ansonsten kommt Windows XP raus, das nur mit einem Milliarden Aufwand halbwegs sicher gemacht worden ist.
Ansonsten ist dein Server nur ein weiterer Spambot im Internet (falls er es noch nicht ist...)
gepostet vor 16 Jahre, 10 Monate von duschendestroyer
es ist doch nur eine andere art sich einzuloggen
nja im ernst ... du kannst wohl jetzt erstmal alle deine mysqlqueries überarbeiten
in der situation kannst du ja auch gleich eine abstraktionsschicht auf den datenbank zugriff legen
eine einfache klasse oder was tolles komplexes
gepostet vor 16 Jahre, 10 Monate von azamaroth
Anscheinend hat sich jemand über diesen Beitrag hier sehr gefreut und alles ausgenutzt.
Jemand hat sich in mehreren Accounts eingeloggt und unfug getrieben. Nun musste ich erstmal das komplette Game sperren.
Ich glaube, ich bin jetzt erstmal mit dem um- oder neuprogrammieren beschäftigt.
Hat vielleicht noch jemand von euch weitere Links zum Thema PHP/SQL + Sicherheit ?
gepostet vor 16 Jahre, 10 Monate von Isogames
Ich fand es auch nicht Vorteilhaft hier gleich den passenden "Code" zu posten! Ne PM hätte es vielleicht auch getan.
Ich kann dir folgendes Buch sehr empfehlen (habe es mir selbst auch gekauft)
Zum Buch
gepostet vor 16 Jahre, 10 Monate von knalli
Es soll jetzt nicht gemein klingen, aber: Sry, der "Code" ist kein Geheimnis. Solche Sachen abzufangen sind Basisgrundlagen einer Webanwendung..
gepostet vor 16 Jahre, 10 Monate von Todi42
Deswegen muss man aber das Vorhandensein solcher Lücken nicht öffentlich machen. Eine PN hätte es auch getan.
gepostet vor 16 Jahre, 10 Monate von Fornax
Ich finde es schade, dass hier im Entwicklerbereich das jemand ausgenutzt hat. Ich hatte gedacht, hier kann man einigermaßen offen miteinander umgehen.
gepostet vor 16 Jahre, 10 Monate von knalli
Ja, das ist wohl wahr. Das gehört sich auch nicht. Aber ich finde es dennoch immer wieder etwas befremdet, wenn Browserspielentwickler quasi aus den Wolken fallen, weil sie noch nichts von Escaping gehört haben. Das heißt aber nicht, dass ich das Ausnutzen befürworte...
gepostet vor 16 Jahre, 10 Monate von KoMtuR
Original von Fornax
Ich finde es schade, dass hier im Entwicklerbereich das jemand ausgenutzt hat. Ich hatte gedacht, hier kann man einigermaßen offen miteinander umgehen.

Zuviele Köche verderben den Brei
gepostet vor 16 Jahre, 10 Monate von Kampfhoernchen
Ich bitte um Entschuldigung, ich habe es verpennt hier rechtzeitig zu editieren.
Trotzdem finde ich das Schwach von dem der das war!
gepostet vor 16 Jahre, 10 Monate von Benj
Ich will mich auch dafür entschuldigen, dass ich hier gleich den string hingeschrieben habe. Obwohl warscheindlich über 90 % der hier anwesenden auch ohne diesen string drauf gekommen wären.
Ich hätte aber nie erwartet, dass jemand in unseren kreisen, einen solchen unsinn anstellt.
Naja, aus Fehlern lernt man - werde mich also in Zukunf mit solchen Komentaren zurückhalten.
gepostet vor 16 Jahre, 10 Monate von Macavity
Obwohl es hart klingt und schon erwähnt wurde. Klar das Ausnutzen einer Schwäche ist mehr als feige, zumal der Fehler ja bereits erwähnt wurde und kaum jemand nach so kurzer Zeit sämtliche Skripte mal eben anpassen kann.
Dennoch ist es wenn auch keine schöne so doch zumindest eine effektive Warnung an azamaroth und hoffentlich auch einige andere.
gepostet vor 16 Jahre, 10 Monate von TheUndeadable
> Obwohl es hart klingt und schon erwähnt wurde
Irgendwie hast du ja Recht.
Ich habe persönlich das Gefühl, dass die Zeit der Windows-Zombies sich langsam dem Ende zuneigt, da es wesentlich attraktiver für 'böse Buben' ist, einen schlecht gewarteten Server zu übernehmen, der gleich mit 100 MBit Spam versenden kann.
Meine Vorhersage:
Die nächste Zombiewelle betrifft Server. Und zwar exakt aus dem gleichen Grund, der auch zu Windowszombies führt: Keine Sicherheitsupdates, Nachlässigkeit und keine Ahnung. (Wenigstens kann man auf dem Server keine Titten.jpg.exe anklicken)
gepostet vor 16 Jahre, 10 Monate von knalli
Original von TheUndeadable
(Wenigstens kann man auf dem Server keine Titten.jpg.exe anklicken)

Dafür aber kb.php, wordpress & Co..

Auf diese Diskussion antworten