PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Input HTML verbiten ?



Sm0k3
20.05.2010, 12:54
Hi undzwar habe ich eine frage, in dem VMS ohne klammanbindung sind ja alle inputs ungesichert dort kann man ja HTML, PHP etc. ausführen drinn.

Nun meine Frage wie kann ich diese Inputs sichern das kein HTML oder PHP ausgeführt wird?

Lokutos
20.05.2010, 12:56
http://de.php.net/mysql_real_escape_string

z.b.

es kommt halt drauf an wo welches feld steht und was damit gemacht wird.

Sm0k3
20.05.2010, 13:04
Es geht mir um diesen teil.


<? head("Nickpage"); ?>
<table border="0" width="600" id="table1">
<tr>
<td valign="top">
<table border="0" width="100%" id="table3">
<tr>
<td width="125"><b>User-ID</b></td>
<td>
<input type="text" value="<? echo $_SESSION[uid]; ?>" readonly name="T2" size="20" ></td>
</tr>
<tr>
<td width="125"><b>Nickname</b></td>
<td><input type="text" value="<? echo get_userdata('nickname', $_SESSION[uid]); ?>" readonly name="T3" size="20"></td>
</tr>
<tr>
<td width="125"><b>Vorname</b></td>
<td><input type="text" id="vorname" value="<? echo get_userdata('vorname', $_SESSION[uid]); ?>" name="T4" size="20">
<input id="C5" type="checkbox" <? echo get_userdata('show_vorname', $_SESSION[uid]); ?> name="C5" value="checked"> Sichtbar</td>
</tr>
<tr>
<td width="125"><b>Nachname</b></td>
<td><input type="text" value="<? echo get_userdata('nachname', $_SESSION[uid]); ?>" id="nachname" name="T5" size="20">
<input type="checkbox" <? echo get_userdata('show_nachname', $_SESSION[uid]); ?> id="C4" name="C4" value="checked"> Sichtbar</td>
</tr>
<tr>
<td width="125">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="125"><b>Homepage</b></td>
<td><input type="text" id="homepage" value="<? echo get_userdata('homepage', $_SESSION[uid]); ?>" name="T6" size="20">
<input type="checkbox" id="C1" <? echo get_userdata('show_homepage', $_SESSION[uid]); ?> name="C1" value="checked"> Sichtbar</td>
</tr>
<tr>
<td width="125"><b>Email</b></td>
<td><input type="text" id="email" value="<? echo get_userdata('email', $_SESSION[uid]); ?>" name="T7" size="20">
<input type="checkbox" id="C2" <? echo get_userdata('show_email', $_SESSION[uid]); ?> name="C2" value="checked"> Sichtbar</td>
</tr>
<tr>
<td width="125"><b>ICQ</b></td>
<td><input type="text" id="icq" value="<? echo get_userdata('icq', $_SESSION[uid]); ?>" name="T8" size="20">
<input type="checkbox" id="C3" <? echo get_userdata('show_icq', $_SESSION[uid]); ?> name="C3" value="checked"> Sichtbar</td>
</tr>
<tr>
<td width="125">&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="125">&nbsp;</td>
<td><p align="center"><a href="#" id="save_link" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-newwin"></span>Daten ändern</a> <a href="#" id="dialog_link" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-newwin"></span>Bild ändern</a></p></td>
</tr>
</table>
</td>
<td width="140" valign="top">
<div align="center">
<table border="0" width="140" id="table2">
<tr>
<td>
<DIV id="ergebnis">
<? if(!file_exists("images/avatare/".$_SESSION['uid'].".jpg")) { $url = '0'; } else { $url = $_SESSION['uid']; } ?>
<Center><img border="0" src="images/avatare/<? echo $url; ?>.jpg"></DIV></Center></p></td>
</tr>
<tr>
<td height="25px"></td>
</tr>
</table>
</div>
</td>
</tr>

</table>
<? foot(); ?>

Ich habe null ahnung wie man diese Funktionen einsetzen tut.

jpwfour
20.05.2010, 13:34
Dieser Teil ist ja nur das HTML Formular, um die Eingaben zu validieren, musst du den Teil im PHP Code suchen, wo diese abgespeichert werden (db_query('UPDATE....)

In dieser Ausgabe kannst du ja die Funktion:
get_userdata()
schon mal so anpassen, dass diese nichts "böses" ausgibt.

Für die Eingaben bietet sich ja auch sowas an wie:


if(!ctype_digit($_POST['postleitzahl'])) die('Bei PLZ nur Zahlen!');
oder


if(!ctype_alpha($_POST['vorname'])) die('Komischer Vorname (bitte nur Buchstaben)');
usw:
http://www.php.net/manual/de/ref.ctype.php
http://www.php.net/manual/de/ref.strings.php
http://www.php.net/manual/de/ref.pcre.php

breaker
24.05.2010, 14:17
http://de.php.net/mysql_real_escape_string

z.b.

es kommt halt drauf an wo welches feld steht und was damit gemacht wird.

Diese Funktion dient ausschliessĺich dazu, um bestimmte Zeichen innerhalb Mysql-Querys unschädlich zu machen und ist kein Wunder-Heilmittel für jeden Zweck.
Richtig Escapen, bzw. "entschärfen" kannst du HTML-Code über htmlentities und ein gescheites Addslashes (ich zb. habe mir eine Funktion gebaut, wo ich mit Addslashes auch Mehrdimensionale Arrays behandeln kann ($data = pwcAddslashes($_POST);)
Dabei solltest du dir auch ein paar Gedanken darüber machen, ob du nur die Referenz der Variable oder wirklich alles Escapen willst.
Dann solltest du bestimmte Felder, wo zb. ein Datum erwartet wird, auch auf solches Prüfen (preg_match zb,. kann sowas sehr schnell und zuverlässig wie ein Auszug aus meiner "check.post.vars"-Klasse zeigt:



public function check_datum_start()
{
if (empty($this->value))
{
$this->post['error'][] = __ERROR_DATUM_START_FEHLT;
}
elseif (!preg_match('/^(([0-9]{2}+[\.]{1})+([0-9]{2}+[\.]{1})+([0-9]{4}))$/', $this->value))
{
$this->post['error'][] = __ERROR_DATUM_START_FALSCH;
}
}