Quasi als 2.Teil des Commits zur Prüfung der übergebenen Zahlenwerte werden jetzt auch alle anderen Usereingaben überprüft, um SQL-Injections / Remote File Inclusions und sowas endlich auszumerzen.
Verwendet werden dazu die nunmehr modifizierten Funktionen str_get und str_post aus der hilfsfunktionen-Datei.
Die einzelnen alten Bearbeitungen der Strings verstreut im Code wurden nun (soweit es sich fürs erste anbot) in diese Funktionen eingebaut und im Code ausdokumentiert.
Bei den String-Eingaben werden nun vier Kategorien/Modi unterschieden, die die wichtigsten Filter-Fälle abdecken:
'SHORTNAME': erlaubt sind alphanumerische Sachen und der Underscore (Verwendung u.a. bei Rassen (romulan, borg, ...), Sprachen, uid, sid und Struktur (gala_4))
'PATHNAME': hier sind zusätzlich . und / für Pfadangaben erlaubt (taucht aktuell nur beim Bildpfad auf)
'DEFAULT': Alphanumerisches und die Sonderzeichen _ & : ; - für diverse Stellen (koord (z.B. 4-2) bei der Sektorwahl zum Setzen neuer Spieler, Html-kodierte Submit-Buttons, Routing-Daten (durch : getrennte Zahlenlisten) )
'SQLSAFE': die obigen Fälle sind natürlich auch 'SQL-sicher', aber dieser Fall wird speziell für das Eintragen allgemeiner Felder (Nachrichten, Forenposts, Spieler-Email usw.) in die DB genommen; grundsätzlich sind hier alle Eingaben erlaubt, aber sie werden entsprechend escaped
-- aktuell werden dort " ' \ sogar wie zuvor im Code verstreut noch entfernt auch wenn ein entsprechendes Escapen ja bereits ausreichen sollte (kann man bei Bedarf jetzt ja sehr leicht zentral ändern)
-- bei bestimmten Variablen (thema, beitrag, offenbarung) werden Html-Zeilenumbrüche mittels nl2br wie früher eingefügt (konsequent wäre es natürlich in Zukunft die html-Zeilenumbrüche gar nicht mehr in der DB zu speichern (wie derzeit beim Logbuch), aber im jetzigen Schritt wollte ich diesbzgl. möglichst alles unverändert lassen, damit alte DB-Einträge keine Anzeigeprobleme machen)
Weitere Codeänderungen im GET/POST-Kontext:
einige zuvor unentdeckte Zahlenwerte wurden entsprechend mit int_get / int_post bedacht
der zusätzliche preg_match Filter für Sprachen (index.php) wurde strenger gemacht: vorher waren völlig beliebige Strings zulässig, die min. zwei aufeinanderfolgende Buchstaben hatten... gemeint war sicher, daß nur zwei aufeinanderfolgende Buchstaben erlaubt sind ;)
beim Subfunk: Code zum Ermitteln der Sprache des Empfängers vereinfacht
Quasi als 2.Teil des Commits zur Prüfung der übergebenen Zahlenwerte werden jetzt auch alle anderen Usereingaben überprüft, um SQL-Injections / Remote File Inclusions und sowas endlich auszumerzen.
Verwendet werden dazu die nunmehr modifizierten Funktionen str_get und str_post aus der hilfsfunktionen-Datei. Die einzelnen alten Bearbeitungen der Strings verstreut im Code wurden nun (soweit es sich fürs erste anbot) in diese Funktionen eingebaut und im Code ausdokumentiert.
Bei den String-Eingaben werden nun vier Kategorien/Modi unterschieden, die die wichtigsten Filter-Fälle abdecken:
Weitere Codeänderungen im GET/POST-Kontext: