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?
Druckbare Version
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?
http://de.php.net/mysql_real_escape_string
z.b.
es kommt halt drauf an wo welches feld steht und was damit gemacht wird.
Es geht mir um diesen teil.
Ich habe null ahnung wie man diese Funktionen einsetzen tut.Zitat:
<? 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"> </td>
<td> </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"> </td>
<td> </td>
</tr>
<tr>
<td width="125"> </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(); ?>
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:
oderPHP-Code:
if(!ctype_digit($_POST['postleitzahl'])) die('Bei PLZ nur Zahlen!');
usw:PHP-Code:
if(!ctype_alpha($_POST['vorname'])) die('Komischer Vorname (bitte nur Buchstaben)');
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
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:
PHP-Code:
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;
}
}