Kurze Frage zu reinkommenden Daten

  • Kann mir hier was passieren?


    PHP
    $_SESSION['stalk'][$_GET['stalk']]['online'])


    Ich bekomme über $_GET['stalk'] einen Player Name der erstmal ge-trim()-t wird.
    Also: http://.......&stalk=cottton&ect....


    Den Player Name wollte ich dann als Key für ein SESSION Array nutzen, um den später von anderen unterscheiden zu können.
    Die Spieler Namen können alles Mögliche enthalten. ZB auch < > | & ect ect


    Sollte ich noch nach irgentwas filtern oder evtl den Namen umformatieren? (wenn ja - in was?)
    Thanks!

  • Speichern wollt ich den Player nich extra.
    Der Name wird nur vom User gebraucht.
    Der will den sozusagen "stalken". Wenn browser zu, dann nix - den Namen braucht dann keiner mehr.


    Mir fällt gerade ein - ich könnte ja den Namen md5 "codieren", also den hash nutzen.
    Beim Vergleich, ob key == key ist logischerweise beide codieren.
    Aber dann hab ich da ne 64 Zzeichen Kette in der SESSION ;D
    wie sieht das denn aus ;D


    Gits was "kürzeres"?



    btw - ich lösche andauernd meine Worte hier im Forum weil ich die "" Funktion von scriptly gewohnt bin lol ;D (STRG+CTRL+Pfeil links =)

  • Aber was?
    Ich geb die daten ja zB nicht ungefiltert aus.
    Da aber in Spielernamen alles drin stecken kann (<>|& ect ect ) kann ich da nicht gross Filtern.
    Geplant war den Namen nur als Key zu verwenden.
    Heisst ja, dass ein Name wie <&&'66"%&/> "nur" im PHP script Verwendung findet.


    $_SESSION['stalk']['<&&'66"%&/>'] - kann doch nix passieren, oder?

  • entweder du filterst es jetzt oder bei der Datenbankabfrage.
    aber wenn du nur das in einer Session speichern willst, theoretisch, und nichts damit machen willst weiter, dann ist es eigentlich egal was der Nutzer da einträgt.

  • In "Key's", Variablennamen, Funktionsnamen, etc. nutzt man keine Sonderzeichen.


    Dafür vergibt man ja schließlich Bezeichner (ID's), um beispielsweise Benutzer mit gleichen Namen oder Sonderzeichen eindeutig zuordnen zu können.


    Auch ohne Ausgabe oder Speichern ist eine ungefilterte Benutzereingabe eine Gefahrenquelle.

  • Kleiner Fehler eingeschlichen - Spielernamen können keine " und ' beinhalten.


    Also bei allen Ausgaben oder beim Speichern in der db wird alles gefiltert. Da hab ich schon aufgepasst.
    Hab auch vieles selbst getestet, was passiert, wenn man versucht code einzuschleusen (mit tools oder manuell)


    Bei den key werd ich ja jetzt doch die IDs nutzen. War ja bissl verpeilt und hab ganz "vergessen", dass die ja gespeichert werden, wenn player existiert.


    Zum thema ob was passieren kann hab ich jetz mal alles getestet, was mir so auf die schnelle eingefallen ist.
    Ergebnis: INERHALB von PHP kann wohl nix passieren

  • genau das denke ich auch, dass dir innerhalb php nichts passieren kann.
    es ist nur gefährlich wenn der string als auszuführender Code verwendet werden soll
    z.b. bei eval() oder hat bei den Datenbanken

  • Auf 73 recht übersichtlichen Zeilen können Sonderzeichen vielleicht nicht viel anrichten, wir schreiben unsere Programme aber natürlich immer so als würden sie in tausende Zeilen Code übergehen, das heißt:

    • Flexibel
    • Übersichtlich
    • "Klein"
    • absolut 100% sicher
    • Kurz: Perfekt


    In diesem Fachbereich gibt es keinen Kompromiss, man kann nicht mal eben etwas hinklatschen und hoffen das es funktioniert, man kann keinen Fehler oder eine Unsauberkeit verdrängen, man muss jedes Detail beachten, ansonsten wird man sich nie weiterentwickeln und nie wirklich großartige Programme schreiben.


    Auf deine Internetseite kann jeder Mensch dieser Welt zugreifen, das heißt das dir auch jeder Schaden zufügen kann.. das Risiko willst du doch nicht wirklich eingehen..


    Hierbei geht es nicht speziell um dein Vorhaben sondern ich spreche da eher allgemein.. ich kann es einfach nicht ertragen wenn Menschen Codes schreiben so nach dem Motto "klappt schon".. nur weil du dein eigenes System nicht infiltrieren kannst heißt das nicht das es niemand schafft :!:

  • Ist mir klar und ich schreibe keinen code nach dem motto "klappt schon".
    Gerade weil es bei uns um tausende spieler geht bin ich vorsichtig.
    Was denkst du warum ich alles (unsere seite) neu schreibe?


    Du sagtst auch immer was man nicht macht oder kommentierst. Aber du hast noch nicht einmal gesagt, wie man es richtig macht.

  • htmlentities ...


    Ich habe mich explizit von deinem Code/Projekt distanziert, wenn du es trotzdem darauf beziehen willst kann ich da nichts für. Auch habe ich dich nicht persönlich angesprochen oder deine Seite sonst wie kritisiert.


    Und dann eine Zeile weiter unten lesen...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!