PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP eingabe sperren



maik15
24-11-2005, 15:58
Hi!

Jmd hat in meinem simplen Gästebuch folgendes eingegeben:


<?php
error_reporting(E_ALL);
echo \"<pre>\\n\";
print_r($_GET); // einfache Ausgabe
var_dump($_GET); // ausführliche Ausgabe.
echo \"</pre>\\n\";
?>
und


<?php
counter = 0;
do{
echo \"Noobieguestbook\";
counter = counter +1;
}
while(counter < 10000);
?>

Nun dachte ich mir, man könnte ja kontrollieren lassen, ob ein <?php und ?> bzw <? und ?> eingegeben wurde.
Wie mache ich das?
Gibts da bessere lösungen?

Gruß
Maik

PS: Gibts irgeneine Funktion, die diesen PC "ausspieonieren" kann (IP, PC Name oder so), damit ich den das nächste mal wiederfinde?
Will ja nicht persönliche daten, nur irgendwas, womit ich den im Netz wieder finde...

maik15
24-11-2005, 16:06
Habe es gerade schnell mit


<?php
$message = str_replace('<?php', "!!!kein php erlaubt!!!", $message);
$message = str_replace('<?', "!!!kein php erlaubt!!!", $message);
$message = str_replace('?>', "!!!kein php erlaubt!!!", $message);
?>

gesperrt, reicht das???

Maik

Pingu
24-11-2005, 18:03
Wenn Du mit Funktionen wie addslashes(), stripslashes(), htmlspecialchars() usw. arbeitest, dann kann Dir das alles egal sein. Denn dann werden die Daten einfach entgegengenommen und genauso wieder ausgegeben.

Pingu

Turbohummel
24-11-2005, 18:21
Alles was von draußen kommt grundsätzlich escapen. Schlimmer wäre es, wenn er sowas eingibt:

'; DROP DATABASE;

Deswegen:
mySQL_escape_string bzw. addslashes verwenden. Was allerdings am <?PHP schlimm sein soll, weiß ich net so recht. Der Code kann eigentlich nicht zur Ausführung kommen, da es ja ein ganz normales String-Literal ist und einfach so ausgegeben wird.

BlueJay
24-11-2005, 21:31
Da das Gästebuch wohl selbstgestrickt ist:

Wird die Zeit bei den Einträgen mitgespeichert?
Dann ist es ein Leichtes, den Eintrag wiederzufinden.

Du hast dann die IP, den Browser, mit viel Glück eine Maschinenkennung.
IPs wechseln, und wenn die Maschine in einem Schulungsraum steht...

so long,
BlueJay

undefined
25-11-2005, 09:00
strip_tags Löst alle deine Probleme ;)

BLUESCREEN3D
26-11-2005, 00:26
Was allerdings am <?PHP schlimm sein soll, weiß ich net so recht. Der Code kann eigentlich nicht zur Ausführung kommen, da es ja ein ganz normales String-Literal ist und einfach so ausgegeben wird.
Genau das frage ich mich gerade auch...

Damit das ausgeführt wird muss das ja z.B. in eine Datei geschrieben werden, die dann bei der Anzeige wieder eingebunden und damit ausgeführt wird O.o

@maik15: Kannst du mal erklären, wie genau du die Daten nach der Eingabe speicherst und wie sie wieder angezeigt werden?

Ansonsten würde ich htmlentities() statt htmlspecialchars() benutzen, weil das noch etwas mehr umwandelt.

maik15
26-11-2005, 11:32
Hi!
Ich speicher die daten momentan ganz einfach in einer txt...
die einzelnen strings werden in eine tabelle eingebunden und gespeichert.
sprich so:


<table>
<tr>
<td><?php echo $Daten 1; ?></td>
</tr>
...
</table>

Und so weiter...
also für jeden eintrag eine neue Tabelle.
Oder wars bloß ein neues "tr"?! egal

Habe es jetzt mit "strip_tags" gelöst und es geht!

Vielen Dank

Maik