ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
412
412
EMPFEHLEN
-
02.01.08 21:21 #1
- Registriert seit
- May 2007
- Beiträge
- 48
Hi, ich habe eine Frage:
Ist das hier sicher?
Oder sollte man noch htmlspecialchars() verwenden?PHP-Code:$name = my_stripslashes($_GET['name']);
$email = my_stripslashes($_GET['email']);
function my_stripslashes($var) {
if(get_magic_quotes_gpc()) {
// wenn magic_quotes_gpc auf 1 steht
// mach was um die Slashes wieder wegzumachen.
$var = stripslashes($var);
}
return $var;
}
$result = mysql_query("INSERT INTO ".DB_PREFIX."posts (name, email) VALUES('mysql_real_escape_string($name)', 'mysql_real_escape_string($email)')");
-
Guck dir mal die mysql_real_escape_string() Funktion an.
-
ich würde es so machen:
PHP-Code:function ParseInsert($var) {
if(get_magic_quotes_gpc()) {
return addslashes(htmlentities(stripslashes($var)));
} else {
return addslashes(htmlentities($var));
}
}
Geändert von pipip (03.01.08 um 14:39 Uhr)
-
Hi
Meiner Meinung nach reicht einfach prinzipiell auf jede variable addslashes(), und beim auslesen ein stripslashes(), oder nicht?
Code :1
$result = mysql_query("INSERT INTO ".DB_PREFIX."posts (name, email) VALUES('".addslashes($name)."', '".addslashes($email)."')");
Gruß
LauraGeändert von DataFox (03.01.08 um 13:36 Uhr)
-
Kommt drauf an wie man es weiterverarbeitet!
Wenn du zum beispiel addslashes() machst und danach stripslashes() ist es zwar für die DB gefiltert, es hat sich jedoch nicht am String geändert. D.h. der "Böse Code" (vielleicht XSS) wird in seiner eingabe form ausgegebenGeändert von sufijen (03.01.08 um 13:58 Uhr)
-
DataFox:
nein, so leicht ist addslashes() leider nicht, da es von magic_quotes_gpc() abhängt:
http://www.php.net/manual/de/function.addslashes.phpDie PHP-Direktive magic_quotes_gpc hat standardmäßig den Wert on, so dass grundsätzlich die Funktion addslashes() auf alle GET-, POST- und COOKIE-Daten angewendet wird. Verwenden Sie daher die Funktion addslashes() nicht, wenn Strings bereits durch magic_quotes_gpc escaped wurden, ansonsten erhalten Sie doppeltes Escaping. Um herauszufinden, ob der Parameter aktiviert ist, verwenden Sie am Einfachsten die Funktion get_magic_quotes_gpc().
/edit
die fkt htmlentities wandelt zudem die alle zeichen in html-codes um... (so wie sufijen geschrieben hat)Geändert von pipip (03.01.08 um 13:59 Uhr)
-
Ich hab da einen Code rumfliegen den ich verwende. Ich bin bisher ganz gut damit ausgekommen:
PHP-Code:<?php
/**
* Bereitet einen String für eine Mysql-Abfrage vor.
* @param string $Param Die Variable welche aufbearbeitet werden soll.
* @param resource $resource Die Verbindung zur Datenbank.
* @return Der aufbearbeitete String.
*/
function mysql_prepare_string($Param, $resource)
{
// String holen
$string = $Param;
// Je nach aktivierten Modulen Quotes und Slashes entfernen
if(get_magic_quotes_gpc())
{
if(ini_get('magic_quotes_sybase'))
{
$string = str_replace("''", "'", $string);
}
else
{
$string = stripslashes($string);
}
}
// Mysql-Escape Funktion ausführen
return mysql_real_escape_string($string, $resource);
}
/**
* Erstellt einen sicheren Mysql-Query
* @param string $query Der Formatquery (Syntax wie bei sprintf)
* @param array $vars Ein Array Mit den Variablen welche eingesetzt werden sollen.
* @param resouce $resource Die Verbindung zur Datenbank.
*/
function mysql_secure_query($query, $vars, $resource)
{
// Alle Variablen vorbereiten
foreach($vars as $var)
{
$var = mysql_prepare_string($var, $resource);
}
// Query Parsen.
return vsprintf($query, $vars);
}
/////////////
// Beispiel
/////////////
// Verbinden etc.
$query = mysql_secure_query('SELECT * FROM `%s` WHERE `NUserID`="%s";', array('UsUser', $_GET['UID']), $resource);
// ...
?>
-
03.01.08 14:17 #8DanBue Tutorials.de Gastzugang
Es sollte noch strip_tags() verwendet werden, damit der User keinen HTML-Code mit einbauen kann.
>Um es zusammenzufassen:
PHP-Code:function prepareUpload($var)
{
if(get_magic_quotes_gpc())
$var = stripslashes($var);
return addslashes(htmlentities(strip_tags(trim($var))));
}
Geändert von DanBue (03.01.08 um 14:38 Uhr) Grund: Fehler in der Syntax
-
strip_tags() würde ich hier nicht empfehlen da "bei unvollständigen oder unkorrekten Tags mehr Text/Daten gelöscht werden als erwartet." (http://de2.php.net/manual/de/function.strip-tags.php)
aus diesem grund verwende ich htmlentities, das hat den gleichen nutzen, da wie beschrieben alle zeichen in html-code umgewandelt werden...
-
03.01.08 16:29 #10
- Registriert seit
- May 2007
- Beiträge
- 48
Ok, habe das ganze jetzt etwas umgebaut und noch htmlentities() hinzugefügt, weil ich das ganze wieder ausgeben will.
So sollte es nun doch sicher sein, oder?
PHP-Code:
function b2w_stripslashes($var) {
if(get_magic_quotes_gpc()) {
$var = stripslashes($var);
}
return $var;
}
function b2w_secure($var) {
if (!is_numeric($var)) {
$var = "'".mysql_real_escape_string($var)."'";
}
return htmlentities($var);
}
$blabla = b2w_stripslashes($_GET['blabla']);
$result = mysql_query("INSERT INTO ".DB_PREFIX."posts (text) VALUES (".b2w_secure($blabla).");
-
ziemlich umständlich, aber sieht richtig aus. sonst nimm doch einfach die von mir oben gepostete funktion

für (integer) zahlen würde ich intval($zahl) nehmen...
-
03.01.08 17:13 #12
- Registriert seit
- May 2007
- Beiträge
- 48
Es sieht nur so umständlich aus, weil ich zwischen b2w_stripslashes() und b2w_secure() noch etwas mit dem Eintrag machen will

Falls man da aber noch etwas verbessern kann oder "sicherer" machen kann, dann bitte poszen!
Ähnliche Themen
-
Ist md5 sicher?
Von queicherius im Forum Coders TalkAntworten: 13Letzter Beitrag: 06.06.09, 23:11 -
Ist das sicher?
Von Malaxo im Forum PHPAntworten: 2Letzter Beitrag: 09.10.08, 09:19 -
Ist das sicher?
Von Lektor21 im Forum PHPAntworten: 13Letzter Beitrag: 26.09.07, 03:10 -
Wie Sicher?
Von Bubble10 im Forum Buchführung, Recht, Steuer & Co.Antworten: 3Letzter Beitrag: 17.06.07, 00:38 -
Wie sicher ist MD5?
Von preko im Forum PHPAntworten: 11Letzter Beitrag: 26.10.04, 20:16





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren