anpera.net
https://anpera.homeip.net/phpbb3/

Geschlechterwirrwar bei Charaktererstellung - Lücke im Core
https://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=2378
Seite 1 von 1

Autor:  Eliwood [ So 19 Mär, 2006 14:57 ]
Betreff des Beitrags:  Geschlechterwirrwar bei Charaktererstellung - Lücke im Core

So. Vorhin ist mir beim erstellen eines Formulares folgendes durch den Kopf:

Was ist, wenn der "Böse-User x" HTML kann, sich das Charakter-Erstellungsformular lokal erstellen, und sich das Formular völlig selbst gestalten.

Nun, kein Problem, denken die meisten, soll er doch, schliesslich kann er nichts bösartiges machen.
Doch dem ist nicht so!

"Böser-User x" kann sich anstatt Radio-Buttons einfach beim Geschlecht ein Text-Feld machen, und völlig andere Werte eingeben.
Wenn wir nun annehmen, dass LoGD die POST-Werte nicht maskieren würde, könnte der User sogar den Insert vollkommen manipulieren, sich Admin-Rechte verschaffen, und anschliessend bösartiges machen.
Nun, ihr könnt dankbar sein, dass das maskiert wird.
So kann "Böser-User x" nur anstatt 0 oder 1 eine 2 eingeben - Und schon stehen ihm Sowohl Männliche als auch Weibliche User.

Getestet ist es:
$this->bbcode_second_pass_code('', '<form action="http://URL-DES-SPIELS/create.php?op=create" method='POST'><br />

Wie willst du in dieser Welt heissen? <input name='name'><br />
Dein Passwort: <input type='password' name='pass1'><br />
Passwort bestätigen: <input type='password' name='pass2'><br />
Deine Email Adresse: <input name='email'> <br />
Du bist <input text name='sex' value='2' /><br />
<input type='submit' class='button' value='Charakter erstellen'><br />
</form>')

Und funktioniert wie vorher gesehen.

Irgendwelche Lösungsvorschläge? :P

Autor:  Kevz [ So 19 Mär, 2006 15:07 ]
Betreff des Beitrags: 

Nicht nur das, ich habe bereits eine Lösung gefunden ohne Passwort sich einzuloggen, egal mit welchem Nick es gilt für alle.

Autor:  Arîzto [ So 19 Mär, 2006 15:11 ]
Betreff des Beitrags: 

Das gefällt mir aber ganz und gar nicht :lol:

Und was macht man nun dagegen? :shock:

Autor:  Kevz [ So 19 Mär, 2006 16:44 ]
Betreff des Beitrags: 

Solange du maskierst, bist sicher.

Autor:  Arîzto [ So 19 Mär, 2006 17:24 ]
Betreff des Beitrags: 

Das mit'm Geschlecht ist bei mir sicher!
Aber das mit'm Einloggen ohne Pw??

Autor:  Eliwood [ So 19 Mär, 2006 18:07 ]
Betreff des Beitrags: 

Arîzto hat geschrieben:
Das mit'm Geschlecht ist bei mir sicher!
Aber das mit'm Einloggen ohne Pw??


Dank LoGD-Grundcode nicht möglich.
Jegliche Sonderzeichen (sofern in den Variablen _COOKIE, HTTP_COOKIE_VARS, _GET, HTTP_GET_VARS, _POST, HTTP_POST_VARS enthalten) für PHP werden maskiert (' wird zu \', " wird zu "), somit wird eine Eingabe für den Namen alà:
Arizto' AND 1=1--
Neutralisiert.

Autor:  Arîzto [ So 19 Mär, 2006 19:56 ]
Betreff des Beitrags: 

Gut, und noch besser, dass ich auf meinem Server nicht so heisse :P

Autor:  Devilzimti [ So 19 Mär, 2006 20:20 ]
Betreff des Beitrags: 

Und wenn magic quotes off sind xP

Autor:  Kevz [ So 19 Mär, 2006 21:41 ]
Betreff des Beitrags: 

Devilzimti hat geschrieben:
Und wenn magic quotes off sind xP

-Dann hat man ein sehr großes problem ;)

Autor:  Auric [ Mo 20 Mär, 2006 16:33 ]
Betreff des Beitrags: 

Bez deiner Frage Eli...

Wäre es nicht möglich eine art Überprüfung zwischenzuschalten, die Testet, ob die eingegebenen Daten ein ein Raster Erlaubter eingaben passen? Bsp für Geschlecht:
[php]
if($_GET['sex'] != 1 && $_GET['sex'] != 0) {
//Fehler ausgeben
} else {
//Wert setzten, weitermachen
}[/php]

Also das ganze per php - das der "Böse User x" Ja nicht so einfach manipulieren kann - die Eingaben noch mal durchkauen und nur wirklich gestattete werte dann in vorgegebene Datenbankfelder einlesen. Mit den Funktionen für reguläre Ausdrücke lässt sich da ja shcon einiges machen - weben sowas wie '=' ausfiltern etc...

Nur mal so als Vorschlag.. ich hoffe das passt so auf deine Frage.

Autor:  Arîzto [ Mo 20 Mär, 2006 16:46 ]
Betreff des Beitrags: 

Ich hab's, wegen 'nem anderen Hack, bei mir eh schon so

[php]if ($HTTP_POST_VARS[sex]==0){
$sql = "INSERT INTO accounts
(name,
[...]
}elseif ($HTTP_POST_VARS[sex]==1){
$sql = "INSERT INTO accounts
(name,[/php]

Autor:  Eliwood [ Mo 20 Mär, 2006 17:21 ]
Betreff des Beitrags: 

Man kanns auch gross machen, wenns kompakt geht :P

[php]'$HTTP_POST_VARS[sex]',[/php]

Einfach ersetzen mit:

[php]'".($_POST['sex']>1?1:$_POST['sex'])."', [/php]

Und schon müsste das Problem weg sein. :)

Autor:  Kevz [ Mo 20 Mär, 2006 17:34 ]
Betreff des Beitrags: 

Wenn dann aber so:
$this->bbcode_second_pass_code('', ''".(intval($_POST['sex'])>1?1:intval($_POST['sex']))."',')

Denn mit intval, wird der String bzw. die dort enthaltenen Werte zu einem integer Wert konventiert, das heisst wenn zb. buchstaben oder so enthalten sind, werden diese Automatisch als 0 erkannt, je nachdem eben.

Autor:  Arîzto [ Mo 20 Mär, 2006 17:39 ]
Betreff des Beitrags: 

Eliwood hat geschrieben:
Man kanns auch gross machen, wenns kompakt geht :P


Lesen, Basi, lesen! ;) Ich sagte doch, wegen eines anderen Hacks ...

Autor:  Eliwood [ Mo 20 Mär, 2006 17:54 ]
Betreff des Beitrags: 

@ Kevz: Ist nicht von nöten. Soweit ich weiss wandelt MySQL alle Werte, die nicht in das Format passen (Also Buchstaben) entweder zu einer 0, weil sie ungültig sind, oder zu einer 1, weils ja true ist... Es ist im Endeffekt egal.
Eine Zahl wird es sowieso, also spar dir die Rechenleitung :P

@ Ari: Kuck mal Aurics Vorschlag an, dann meine :roll:
Dass es bei dir sowieso anders is, hast du mir schon gesagt.
Und übrigens, nimm $_POST, und nicht $HTTP_POST_VARS ;)

Autor:  Arîzto [ Mo 20 Mär, 2006 18:02 ]
Betreff des Beitrags: 

Eliwood hat geschrieben:
Und übrigens, nimm $_POST, und nicht $HTTP_POST_VARS ;)


:shock: Hättest du das nicht gesagt ... wär's mir gar nicht aufgefallen...

Autor:  Kevz [ Mo 20 Mär, 2006 18:16 ]
Betreff des Beitrags: 

Sicher ist sicher Eli :D

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/