DropDown in MySQL

REQUEST wird verwendet da man durch GET prima CSS Attacken fahren kann.

Dem aufmerksamen Leser von http://www.php.net wird dies sicherlich nicht entgangen sein. :eek:

Sicherlich werde ich darauf achten demnächst alles zu beachten ;-]
 
Nur das in REQUEST auch alle übergebenen Werte aus GET stehen. Und das soll weniger gefählich sein?
 
Weil man GET Variablen prima manipulieren kann.

Generell gilt doch sicherheitstechnisch. dass man möglichst keine sichtbaren oder global bzw. public Variablen benutzen sollte.
Eine interessante Newbie Lektüre zum Ausnutzen von GET steht auf der Seite des CCC.
 
Zuletzt bearbeitet:
Und diese GET Variablen findest du wieder in REQUEST. Von daher ist es doch egal, ob du jetzt GET oder REQUEST verwendest.
 
Aber das ist doch nicht nur ein Phänomen, das per GET-Methode übertragene Argumente betrifft. Sondern alle von außen manipulierbare Werte sind davon betroffen, so also auch die per POST-Methode oder Cookie übergenenen.
Und der Nachteil der $_REQUEST-Variable ist doch gerade, dass der Ursprung der enhaltenen Daten nicht genauer spezifiziert werden kann, da dessen Inhalt aus den per GET-Methode, per POST-Methode und per Cookie übergebene Werte zusammengesetzt wird.
 
Das hab ich nicht behauptet. Ich habe geschrieben das es einfacher ist GET Variablen zu manipulieren. Wenn man will kann man jede Eingabe manipulieren aus diesem Grunde wurde ja schliesslich REQUEST eingeführt. Aber ich denke nicht das Sicherheitstechnik hier das Thema war. Und ich hab auch keine Lust meinen Programmierstil zu erläutern oder Fakten zu diskutieren. Wenn dich die Themen ernsthaft interessieren solltest du bei meinen Quellenangaben nachlesen. Ich sehe die Diskussion als beendet an. Es freut mich geholfen zu haben.
 
Ich kapiere immer noch nicht, warum REQUEST sicherer sein soll. REQUEST setzt sich doch aus GET, POST und COOKIE zusammen (Wie Gumbo schon erwähnte). Daher ist in REQUEST der gleiche Inhalt wie in den drei einzelnen Variablen. Also kann man auch den Inhalt dieser Variable manipulieren.

@dodge11:
Woher kommt denn bei dir eigentlich $row?
 
Andiprue — Aber die Werte der $_REQUEST-Variable sind doch viel „unsicherer“, da der Ursprung der Werte nicht klar ist. Denn der Inhalt der $_REQUEST-Variable wird aus drei Variablen zusammengemischt. Verstehst du das etwa nicht?

Zu deinem Anliegen, Dodge11: Probier mal Folgendes:
PHP:
<?php

	if( $SERVER['REQUEST_METHOD'] == 'POST' && isset($_GET['do']) && $_GET['do'] == 'update' ) {
		$query = '
			UPDATE
			        `mbjugend_spiel`
			  SET
			        `haheim` = "'.mysql_real_escape_string($_POST['haheim']).'",
			        `hagast` = "'.mysql_real_escape_string($_POST['hagast']).'",
			        `egheim` = "'.mysql_real_escape_string($_POST['egheim']).'",
			        `eggast` = "'.mysql_real_escape_string($_POST['eggast']).'"
			  WHERE
			        `spiel_id` = '.intval($_POST['spiel_id']).'
			';
		$result = mysql_query($query)
			or die(mysql_error());
		if( mysql_affected_rows() > 0 ) {
			echo 'Daten erfolgreich aktualisiert.';
		}
	}

	$query = '
		SELECT
		        `spiel_id`
		  FROM
		        `mbjugend_spiel`
		';
	$result = mysql_query($query)
		or die(mysql_error());

?>
<form action="index.php?do=update" method="post">
<select name="spiel_id">
<?php

	while( $row = mysql_fetch_assoc($result) ) {
		echo '<option value="'.htmlspecialchars($row['spiel_id']).'>'.htmlspecialchars($row['spiel_id']).'</option>';
	}

?>
</select>
                <td align="center"><b>Halbzeitergebnis:</b></td>
                <td align="center"><input type="text" name="haheim" size="3" value="0" maxlength="3"></td>
                <td align="center"><b>:</b></td>
                <td align="center"><input type="text" name="hagast" size="3" value="0" maxlength="3"></td>
                <td>&#160</td>
                <td align="center"><b>Endergebnis:</b></td>
                <td align="center"><input type="text" name="egheim" size="3" value="0" maxlength="3"></td>
                <td align="center"><b>:</b></td>
                <td align="center"><input type="text" name="eggast" size="3" value="0" maxlength="3"></td>
            </tr>
        </table>
        <br>
        <br>
        
        <input type="reset" value="Spiel reset"></input>
        <input type="submit" value="Spiel speichern"></input>
        
        </form>
 
Zurück