| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

12-09-2005, 22:12
|
|
Melchor
Junior Member
|
|
Registriert seit: Feb 2005
Beiträge: 61
|
|
$_POST Inhalte prüfen
Hallo zusammen,
habe schon mehrmals danach gesucht, aber nichts richtiges gefunden. Es geht mir darum, den Inahlt von $_POST zu prüfen. Also ob da versteckte Befehle, Hacks usw. drin sind. Will also einfach nur die Sicherheit meiner Scripte und des Servers verbessern. Kennt hier vielleicht wer eine Seite wo ich eine genaue Beschreibung finde worauf ich dabei achten muss?
|

12-09-2005, 22:50
|
Shurakai
Master  
|
|
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.090
|
|
z.B. htmlentities benutzen
|

12-09-2005, 22:53
|
|
hhcm
PHP Senior
|
|
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.820
|
|
Selbst wenn versteckte Befehle drin stehen, musst ja nicht alles verarbeiten.
Deine Anwendung benutzt $_POST["user"] und $_POST["pass"]
warum sollte dich ein (wie auch immer) eingeschleustes $_POST["format C:"] interessieren?
Kannst z.B mit
print_r($_POST) auch gerne mal nachsehen ob da was nicht gewolltes drinsteht...
__________________
gruss Chris
Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."
|

13-09-2005, 00:23
|
|
westberlin
Member
|
|
Registriert seit: Dec 2002
Ort: bln / fhain
Beiträge: 336
|
|
Ich prüfe meisten so:
3 Beispiele mit errorhandling...
[pseudo]
PHP-Code:
$checked_plz = isset($_POST['plz']) ? $_POST['plz']+0 : 0;
if ($checked_plz == 0 || strlen($_POST['plz']) != 5){
$error[] = 1;
}
$mobil = 0;
if ($_POST['mobil'] == 1){
$mobil = 1;
}
if(!preg_match('/^[a-zA-ZäöüÄÖÜ\/ -]{3,30}$/',$_POST['name'])){
$error[] = 4;
}
if(count($error) > 0){
$code = implode('-',$error);
if(in_array(1, $error))
echo "*plz nicht korrekt!<br>";
// evtl. weitere verwendung der fehlercodes...
header("location: blabla.php?code=$code");
exit;
}
// keine fehler, weiter gehts...
|

13-09-2005, 00:55
|
Wurzel
Master  
|
|
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
|
|
in $_POST / $_GET steht das drin, was ich im script erwarte, also prüfe ich auch darauf ... strings werden entwertet, je nach bedarf htmlentities/mysql_escape_string/strip_tags etc. pp. ... zahlenwerte explizit auf float/int gesetzt ... sonderfälle mit regexp geprüft.
was nicht ins raster ^^ passt ... fliegt in die ablage "p".
bei $_FILES sollte man ggfs. shell-zugriff haben, um generell unerwünschte daten vom server fernzuhalten.
__________________
-
|

13-09-2005, 01:31
|
|
ExInfernis
Junior Member
|
|
Registriert seit: Jan 2004
Ort: Berlin
Beiträge: 213
|
|
Bei einem meiner Projekte liegen alle Variablennamen mit ihrer Typbezeichnung in ner DB.
Dazu gibts ne Funktion die alle POST, GET, ... Variablen mit dieser Tabelle abgleicht, also überprüft ob diese Variable überhaupt existieren darf und wenn ja ob der Typ stimmt. Wird ein schwarzes Schaaf gefunden erfolgt ein eintrag in meiner error-history.
Ist natürlich etwas aufwendig dafür aber sehr sicher.
|

13-09-2005, 07:52
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
Zitat:
Original geschrieben von ExInfernis
Bei einem meiner Projekte liegen alle Variablennamen mit ihrer Typbezeichnung in ner DB.
Dazu gibts ne Funktion die alle POST, GET, ... Variablen mit dieser Tabelle abgleicht, also überprüft ob diese Variable überhaupt existieren darf und wenn ja ob der Typ stimmt. Wird ein schwarzes Schaaf gefunden erfolgt ein eintrag in meiner error-history.
Ist natürlich etwas aufwendig dafür aber sehr sicher.
|
wiedermal ein perfekter Overkill für die Datenbank, bei einem größerem (großen) Projekt
|

13-09-2005, 11:18
|
|
kaguya
Newbie
|
|
Registriert seit: Apr 2004
Beiträge: 132
|
|
das wollte ich auch gerade sagen
man sollte immer versuchen möglichst wenige queries zu benutzen, das was du machst kannst du sicherlich auch mit textdateien oder ganz anders lösen.
|

13-09-2005, 18:58
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
Zitat:
Original geschrieben von kaguya
das was du machst kannst du sicherlich auch mit textdateien
|
das ist genauso der perfekte Overkill für das Filesystem
|

13-09-2005, 19:28
|
|
ExInfernis
Junior Member
|
|
Registriert seit: Jan 2004
Ort: Berlin
Beiträge: 213
|
|
Die Db ist nur klein und steht auf nem eigenen Server.
Hatte einfach Lust es umzusetzen.
|

13-09-2005, 19:53
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
Zitat:
Original geschrieben von ExInfernis
Die Db ist nur klein und steht auf nem eigenen Server.
Hatte einfach Lust es umzusetzen.
|
kannst du ja auch tun, aber für 120%-Projekte/Server sind solche Spielereien nichts
|

13-09-2005, 21:59
|
|
kaguya
Newbie
|
|
Registriert seit: Apr 2004
Beiträge: 132
|
|
naja dann eben ganz ohne speichern
ich meinte nur das es im filesystem besser ist als in ner db, mysql hält bekanntlich nicht viel aus
|

13-09-2005, 22:07
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
Zitat:
Original geschrieben von kaguya
mysql hält bekanntlich nicht viel aus
|
Woher hast du das denn?
|

14-09-2005, 10:43
|
|
kaguya
Newbie
|
|
Registriert seit: Apr 2004
Beiträge: 132
|
|
von leuten die sich auskennen
ich kenne da jemanden der macht sowas seit 14 jahren, unter anderem hat er seit 1999 eine shop software und der meint das seine konkurrenz mit MYSQL shops sehr viel schneller an ihre grenzen kommt als er mit seinen gut durchdachten csv datenbanken, alleine was Artikelanzahl angeht. Da ein Shop sehr klickintensiv ist und viele shops in der db etliche verknüpfungen mit tabellen für variationen oder andere sprachen haben wir das ganze ab 10.000 artikeln sehr viel langsamer als bei text dateien.
und im vergleich zu zb xtcommerce ist sein shop ne ecke schneller.
bei foren etc kann man auf mysql natürlich nicht verzichten aber ich finde man sollte sich db anfragen sparen wo man kann.
|

14-09-2005, 12:39
|
|
programmer
Newbie
|
|
Registriert seit: Sep 2005
Beiträge: 4
|
|
Zitat:
|
und im vergleich zu zb xtcommerce ist sein shop ne ecke schneller.
|
was wohl von der programmierung abhängt, ich denke unter gleichen voraussetzungen ist ne datenbank um längen schneller wie textdateien. dazu muss die anwendung und die datenbank auch auf performance designed werden, was in vielen anwendungen nicht der fall ist.
aber zur eigentlichen frage:
prüfe alle POST-Variablen so genau wie möglich, wie scho westberlin geschrieben hat:
Was wird erwartet? nur zahlen, dann akzeptiere nur zahlen.
nur text?, dann akzeptiere nur text.
Filtere zusätzliche Zeichen aus, die keinen sinn machen (Zeilenumbrüche etc....)
und htmlentities() verwenden.
Zitat:
Selbst wenn versteckte Befehle drin stehen, musst ja nicht alles verarbeiten.
Deine Anwendung benutzt $_POST["user"] und $_POST["pass"]
warum sollte dich ein (wie auch immer) eingeschleustes $_POST["format C:"] interessieren?
|
verarbeitet wird das doch dann aber meistens in ner datenbankanfrage, und dafür sollte es schon so geprüft werden, dass keine SQL-Befehle eingeschleust werden können.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|