Sonntag, 29. Januar 2012, 01:37 UTC+1
Sie sind nicht angemeldet.
Lieber Besucher, herzlich willkommen bei: HackTheWeb Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
). Von dem her habe ich auch keine wirklich Vorkenntnisse, was den Spielablauf betrifft. Was mir also sofort aufgefallen ist: Es existieren keinerlei Hilfen.



)
) und sieht professionell aus, das Script sieht sauber geschrieben aus und Eingaben werden sehr gut gefiltert. Für jemanden der die db-Struktur nicht kennt und keine Serverantworten zur Verfügung hat, ist es ziemlich schwierig unerlaubt Daten erfolgreich zu manipulieren und für das das alles erst im Aufbau ist, muss ich sagen, großes Lob. Hier ist eine gute Grundstruktur geschaffen worden.
Also nachdem ich von WarriorNight hierauf angesetzt worden bin, hab ich mich mal ein bissl durchgeklickt und Dinge die mir aufgefallen sind aufgeschrieben. Hoffe das wird mir nicht übel genommen.
Mal vorweg: Ich bin hier wesentlich detaillierter als dort. Bei dem dortigen Gegurke was sich Quelltext nennt, hatte ich nicht wirklich Lust alles aufzuzählen. Hier scheint sauberer gearbeitet zu werden.
Dann noch was: Ich hab einen ziemlich "konstruktiven Tonfall" drauf. Sprich ich zähl einfach ganz brutal auf was mir so auffällt. Hoffe das wird nicht falsch verstanden oder mir übel genommen. Außerdem kann es auch gut sein, dass ich Dinge erwähne, die sowieso schon in Planung oder unwichtig sind. Also nicht auf den Schlips treten lassen. Ich erwähne nur immer gerne alles um vollständig zu sein.
Zitat
Aufbaudesign
Gut, also mal als kleiner Einstieg:
Ich bin früher schon öfters über dieses Spielprinzip gestolpert, hatte mich aber nie angemeldet, da ich mit schwarz als Hintergrundfarbe nicht viel anfangen kann (komm auch mit Weltraumspielen nicht klar). Von dem her habe ich auch keine wirklich Vorkenntnisse, was den Spielablauf betrifft. Was mir also sofort aufgefallen ist: Es existieren keinerlei Hilfen.
Ich nehme mal an, dass die in der ToDo-Hierarchie ganz unten stehen und wenn sie noch in Planung sind, passt das auch so. Wollte nur mal erwähnt haben, dass ich mich unter normalen Umständen nicht angemeldet hätte, da ich nicht den Hauch einer Ahnung hatte worum es hier geht.
Zitat
Fehler 2 der mir passiert ist: Ich wollte gleich mal ein Passwort anfordern und war kurz etwas verwirrt über die "User schon vorhanden"-Meldung. Ich hab recht schnell gecheckt, dass ich zum Registrierlink gehöre, aber vielleicht wäre es hier besser die Bezeichnung auf "Passwort vergessen" zu ändern.
Zitat
Das bereits eingegebene Captcha find ich in diesem Kontext ziemlich cool. Find ich echt gut die Idee. Bin mir aber nicht ganz sicher ob das nur eine Temporäre Lösung ist. Falls nicht, existiert beim Login eine Eingabeüberprüfung. Wäre nicht wirklich notwendig und ist verwirrend, wenn man die Loginseite doppelt offen hat und sich an der "alten" anmeldet.

Zitat
Gut, im Spiel. Was tuh ich jetzt? Ich klick mich so durch, notier mir nebenbei, dass unter "Computer" statt den 3 "toten" Links (MoneyMarket, Überweisung ,Operation Center) eine Meldung wie "Noch nicht gebaut" oder so, ausgegeben werden könnte. Und jetzt? Ich klicke dahin, dorthin, meld mich am Alphaserver an und such dort weiter. Ich hab gute 2 min gebraucht, bis ich gecheckt hab dass der "Upgrade"-Link kein Kapitelreiter, sondern ein richtiger Link ist![]()
Ich behaupte mal das liegt nur an meiner Blödheit, aber da das Spiel ja die breite Masse ansprechen soll, sollte es lieber eine "Dummheits"-Prävention inkludiert haben und zb die obere Leite wirklich eine Navi-Leiste umwandeln und einen Kapitelreiter namens "Computer Eigenschaften" hinzufügen![]()
Zitat
Was mir dann noch aufgefallen ist, ist das ingame kein Forumslink besteht. Ich war ne Zeitlang der Meinung es würde nur der Serverblog existieren. Stichwort Prävention undso![]()
Zitat
Oh, und hat die Scriptinfo-Tabelle auch spielerische Bedeutung? Für jemanden, der mit den Begriffen nichts anfangen kann, ist das wohl ziemlich verwirrend.
Zitat
Quelltext
Nur ganz kurz durchgeblättert.
Mein Firebug gibt einen ganzen Haufen css-Meldungen aus.
Zitat
Außerdem sollte man sich überlegen das Tabellendesgin in div-Design zu ändern. Schafft Übersichtlichkeit und spart Quelltext.
Zitat
Dann hast du ein script-tag, dass du - wenn ich das richtig sehe - ruhig in den Head schieben kannst.
Des weiteren kannst du bei deinen form-tags oft auch das action-Attribut leer lassen anstatt die eh gerade Aufgerufene Url nochmal reinzusetzen. Auch die Fileangabe im Link ist überflüssig. Es genügt die Einfache Angabe der Get-Variablen.
Zitat
Dann eine Grundfrage: Wofür ist das token-Attribut? Als Erweiterung für das phpSession-Cookie? Auf jeden Fall ist es nervig, wenn man die Get-Variablen untersuchen will![]()
Zitat
So, nun zum eigentlichen:
Also XSS, hab ich nirgends hinbekommen. Hier scheinen die Usereingaben ziemlich streng gefiltert zu werden. Generell hab ich nirgends eine direkte sql-Injektion hinbekommen. Nur bei Get-Variablen musst du aufpassen.
So war es mir zb möglich bei der Rangliste und beim Nachrichten schreiben per id-Variable in deine db zu kommen. Bei längeren Einträgen dauert es zwar länger, aber möglich ist es so trotzdem ohne weiteres deine db auszuspähen. Also auch hier unbedingt ein settype reinhauen.
Ach und, bei der Gelegenheit: Wie zum Teufel heißt deine Passwort-Spalte?? Ich hab alle Kombinationen ausprobiert, aber ich hab sie einfach nicht gefunden![]()
Zitat
Außerdem ist bei der Nachrichtenansicht auch eine ungeschützte id-Get-Variable. Ein recht unkomlpizierter Weg sich sämtliche Nachrichten durchzulesen. Nichts wirklich interessantes dabei![]()
Und auch wenn ein settype dieses Problem sowieso beheben sollte, würde ich mir angewöhnen, dass die Anweisungen, die nicht von Uservariablen abhängig sind, vorher anzugeben.
Also
... WHERE $x = $y && id='$_GET[id]'
anstatt
... WHERE id='$_GET[id]' && $x = $y
Die Zauber-Injections-Zeichenfolge '--' (Kommentar-Ankündigung) wäre dann außer Kraft gesetzt.
Und natürlich dürfen die Anführungszeichen nicht vergessen werden. Die fehlen hier auch.
Um nur mal anzumerken:
Ich verwendete Anführungszeichen in den seltensten Fällen um Strings anzukündigen, sondern eigentlich nur um eventuelle Injektions zu relativieren.
So könnte zb ein Spieler sich mit dem Usernamen anmelden: 'users.name=0--'. Beim Anmeldescript sind die Anführungszeichen gesetzt, dadurch wird der Befehl nicht ausgeführt. Allerdings könnten bei einem Backup-Script, welches nur von Cronjobs ausgeführt wird, die Anführungszeichen nicht angegeben worden sein, da der Name ja aus der db ausgelesen wird und dadurch keine manipulierten Variablen erwartet werden.
Das Ergebnis wäre aber trotzdem, dass bei der Verwendung des Usernamens in Zusammenhang mit einem UPDATE-Befehl auf einen Schlag der gesamte Inhalt der db unwiederbringlich nicht mehr zu gebrauchen wäre.
(ja ich weiß, dass in Scripts, in welchen Strings in die db geschrieben werden die Anführungszeichen sowieso angeben werden müssen, da der Befehl sonst fehlerhaft wäre. Aber gehen wir mal von dem Fall aus, dass das Update-Script an einem Sonntag um 5 Uhr früh in halbtrunkenem Zustand geschrieben wurde und dass dieser eine mysql-Befehl nur unter bestimmten Voraussetzungen ausgeführt wird, die beim debugging nicht aufgetreten sind. Da nur der Server intern die Fehlermeldung bekommt, würde erst sehr spät auffallen, dass ein Fehler im Script existiert. Und eine Spieleranmeldung reicht schließlich aus...)
Oh und wenn ich das richtig sehe (ich sehe den Befehl zum ersten Mal) hat der Befehl mysql_escape_string denselben Effekt wie stripslashes, welcher durch magic_quotes=on sowieso überflüssig ist. Keine Ahnung was sich die php-Leudeln da gedacht haben.
Zitat
Dann sind noch einige kleine Kleinigkeiten in deinem Quellcode, die mir aufgefallen sind:
Wie ich aus deinem (ziemlich coolen) Debug-Script erkennen kann, verwendest du öfters die Phrase:
(Anweisungg) ? $Variable = 1 : $Variable = 2;
Zeichenspaarender und (für mich persönlich) übersichtlicher wäre:
$Variable = (Anweisungg) ? 1 : 0;
Dann hast du in der Profilansicht keine Überprüfung, ob die User-id überhaupt existiert.
Bei dieser Gelegenheit erscheint übrigens auch ein Fehler im debugging-Script. Ganz am Schluss scheitert ein fopen-Befehl.
Bei den Nachrichten gibt es zwar eine Überprüfung, ob der User existiert, aber davor ist noch die "der ist gestört und redet mit sich selbst"-Überprüfung. Dadurch kommt es zu einem Notice (und ja: ich BIN gestört, was dagegen?)
Zitat
Oh, und xampp? Wurde das nachkonfiguriert? kA wie sicher und stabil die Standarteinstellungen sind...
Zitat
Außerdem erscheint, wenn man auf dem Alpha-Server einen Account erstellt eine Fehlermeldung. Sonst scheint aber alles normal zu funzen...
Dann stört mich noch die Aufforderung zum Logout. Das hat mich bei gmx auch immer gestört. Ich arbeite alleine an meinem Computer. Die Gefahr, dass sich jemand, in dem Zeitraum in dem meine Session noch besteht an meinen Cookies oder Verlauf zu schaffen macht ist also sehr gering.
Ist nur so eine Prinzip-Sache. ich mag es nicht, wenn man mich an etwas erinnert, dass ich absichtlich außer Acht gelassen habe![]()
Zwei letzte kleine Punkte gibt es noch:
Ohne Javascript ist es nicht möglich Aufträge ohne js in Auftrag zu geben oder abzubrechen. Eine Lösung wäre, bei den Links eine href-Angabe zu geben und das onClick-Event umändern in:
if(confirm("bla")) return true; else return false;
Dann müssten Spieler ohne js nur auf die Sicherheitsabfrage verzichten, könnten die Funktionen aber trotzdem (zb mit dem Handy) nutzen. Für "normal"-Spieler hätte das keine Änderung.
Bei den Buttons könnte man auch auf Links mit Hintergrundbildern umsteigen oder die Buttons jeweils mit formtags mit demselben onClick-Event umschließen.
Zitat
Im großen und ganzen ist die Seite ziemlich gut.
Das Design ist hübsch (für nicht-schwarz-Allergiker) und sieht professionell aus, das Script sieht sauber geschrieben aus und Eingaben werden sehr gut gefiltert. Für jemanden der die db-Struktur nicht kennt und keine Serverantworten zur Verfügung hat, ist es ziemlich schwierig unerlaubt Daten erfolgreich zu manipulieren und für das das alles erst im Aufbau ist, muss ich sagen, großes Lob. Hier ist eine gute Grundstruktur geschaffen worden.
Im übrigen finde ich die Seite "gefühlsmäßig" gut. Hat eine gewisse Sympathie und auf den ersten Blick herrscht eine gute Kommunikation zwischen Admin und Community.
Nochmal großes Lob.
Ich hoffe meine Kritik kann verwertet werden und dass ich nicht zu streng war.
Zitat
Ganz liebe Grüße
Jodli
Ps
So, um auch was davon zu haben: Hab heut erfahren, dass ich die Psychologie-Aufnahmepüfung nicht geschafft hab (nach 4 Monaten büffeln *grmbl*). Also bitte ich mal um eine Runde Mitleid![]()
Oh und wenn ich das richtig sehe (ich sehe den Befehl zum ersten Mal) hat der Befehl mysql_escape_string denselben Effekt wie stripslashes, welcher durch magic_quotes=on sowieso überflüssig ist. Keine Ahnung was sich die php-Leudeln da gedacht haben.


Zitat
Ich hab gute 2 min gebraucht, bis ich gecheckt hab dass der "Upgrade"-Link kein Kapitelreiter, sondern ein richtiger Link ist
Ich behaupte mal das liegt nur an meiner Blödheit, aber da das Spiel ja die breite Masse ansprechen soll, sollte es lieber eine "Dummheits"-Prävention inkludiert haben und zb die obere Leite wirklich eine Navi-Leiste umwandeln und einen Kapitelreiter namens "Computer Eigenschaften" hinzufügen