php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.02.2007, 18:51  
Benutzer
 
Registriert seit: 22.04.2005
Beiträge: 59
Aris Sung
Standard MySQL-Befehle in Gästebucheinträgen?

es ist klar das man einfach so HTML-Befehle in Gästebucheinträge eintragen kann, wenn das gästebuch nicht die HTML-Tags filtert, aber was ist den mit MySQL-Befehlen?

Bsp.: als Eintrag:
PHP-Code:
<?php
$sql
="TRUNCTALE TABLE 'gb'";
mysql_query($sql);
?>
wonach muss man den dann seinen Filter einstellen, damit man das verhindern will?
Aris Sung ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.02.2007, 18:56  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Du suchst wahrscheinlich mysql_real_escape_string()
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 17.02.2007, 19:06  
Benutzer
 
Registriert seit: 22.04.2005
Beiträge: 59
Aris Sung
Standard

genau
obwohl ich gerade selbst auprobiert habe meine gb zu leeren.
der eintrag wird als string angezeigt und gar nicht als code identifiziert
Aris Sung ist offline  
Alt 17.02.2007, 19:44  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Zitat:
Zitat von Aris Sung
genau
obwohl ich gerade selbst auprobiert habe meine gb zu leeren.
der eintrag wird als string angezeigt und gar nicht als code identifiziert
Natürlich wird der Eintrag nicht als Code ausgeführt - warum sollte er?


Trotzdem solltest du alle Usereingaben entsprechend absichern - z.B. über mysql_real_escape_string(). Such einfach mal nach "SQL-Injections" wenn dich das Thema intressiert.
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 01.07.2007, 17:02  
Benutzer
 
Registriert seit: 22.04.2005
Beiträge: 59
Aris Sung
Standard

hui...schon lange her...aber ich grabe das thema einfach nochmal aus :P

so...wie ich mich nun informiert habe besteht die gefahr bei SQL-Injections das man sich bei formulareingaben die steuerzeichen von mysql zu nutzen macht.

Bsp:
Code:
$user=$_POST["user"];
$query = "SELECT * FROM users WHERE user='$user'";
mysql_query($query);
------------------------------
$_POST["user"]="' OR ''='"
------------------------------
darauf kommt die Anfrage:
SELECT * FROM users WHERE user='' OR ''=''
mit mysql_real_escape_string kann dies dann also verhindert werden, indem aus den Single-Quotes an der Schnittstelle für die Übergabe" \' " werden.

Nun bin ich aber verwirrt. Ich habe meine SQL-Abfrage bei mir nicht mit mysql_real_escape_string versehen, aber die Abfrage hat den gleichen Format

Wobei gesagt sein muss das ich meine sql-Befehle anders ausführe...hier ein überblick:
PHP-Code:
function instruction($order,$table,$was,$wo,$values) { // Hauptfunktion für alle MySQL-Anweisungen
        
if ($order=="readone") { // Liest Zeile aus einem Element in der entsprechenden Tabelle und fügt es in einen array ein
            
$inhalt = array();
            
$sql "SELECT * FROM ".$table." WHERE ".$wo;
            echo 
$sql."
"
;
            
$result mysql_query($sql);
            while (
$row mysql_fetch_array($resultMYSQL_ASSOC)) {
                
array_push($inhalt$row);
              }
            return 
$inhalt;
        }
}

Abfrage:
$user=$_POST["user"];
$arr instruction('readone',$table['user'],'',"user='".$user."'",'');

es sei:
$_POST["user"]="' OR ''='";
dann ist $sql:
SELECT FROM user WHERE user='\' OR \'\'=\'' 
frage: wie kann das sein, wenn ich doch nicht mal mysql_real_escape_sting benutze?
Aris Sung ist offline  
Alt 01.07.2007, 19:09  
Erfahrener Benutzer
 
Registriert seit: 21.07.2005
Beiträge: 209
pepe24
Standard

Hallo Aris,

dann ist wohl bei dir in der PHP.ini "magic_quotes_gpc" aktiviert, das das übernimmt. Eigentlich eine überflüssige einstellung, die man deaktivieren sollte. Um die Usereingaben sicher zu machen, sollte man doch lieber selbst hand anlegen.

Gruß
pepe24 ist offline  
Alt 01.07.2007, 19:10  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ich habe hier bereits einmal ausführlich auf eine Frage zum Thema SQL-Injections geantwortet:
http://www.phpfriend.de/forum/viewto...alescapestring

Bleibt deine Frage danach trotzdem bestehen, formulier sie nocheinmal neu, dann können wir nochmal drüber reden, denn
Zitat:
Nun bin ich aber verwirrt. Ich habe meine SQL-Abfrage bei mir nicht mit mysql_real_escape_string versehen, aber die Abfrage hat den gleichen Format Confused
verstehe ich nicht. Aber bitte erst einmal den Thread oben durchlesen.
Zergling-new ist offline  
Alt 01.07.2007, 22:29  
Benutzer
 
Registriert seit: 22.04.2005
Beiträge: 59
Aris Sung
Standard

k...jetzt hab ich es verstanden...dann müsste ich also:
PHP-Code:
<?php function instruction($order,$table,$was,$wo,$values) { // Hauptfunktion für alle MySQL-Anweisungen
        
if ($order=="readone") { // Liest Zeile aus einem Element in der entsprechenden Tabelle und fügt es in einen array ein
            
$inhalt = array();
            
$sql "SELECT * FROM ".$table." WHERE ".$wo;
            echo 
$sql."
"
;
            
$result mysql_query($sql);
            while (
$row mysql_fetch_array($resultMYSQL_ASSOC)) {
                
array_push($inhalt$row);
              }
            return 
$inhalt;
        }
}

function 
quoteSmart($value)
{
  if (
get_magic_quotes_gpc()) { // magic quotes aktiviert?
    
$value stripslashes($value); // dann addslashes() rückgängig machen
  
}
  return 
mysql_real_escape_string($value); // richtig escapen


$arr instruction('readone',$table['user'],'',"user='".quoteSmart($user)."'",'');
damit hab ich auch gleich die überprüfung drin ob magic quotes an ist oder nicht.
Aris Sung ist offline  
Alt 02.07.2007, 01:19  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ist das eine Frage oder Feststellung?
Zergling-new ist offline  
Alt 02.07.2007, 01:54  
Benutzer
 
Registriert seit: 22.04.2005
Beiträge: 59
Aris Sung
Standard

noch überlegt:
Zitat:
k...jetzt hab ich es verstanden...dann müsste ich also:
zusammengefügt, ausprobiert und
positive feststellung:
Zitat:
damit hab ich auch gleich die überprüfung drin ob magic quotes an ist oder nicht.
...ich weiß...ich bin zu oft durcheinander - ist in arbeit :wink:
Aris Sung ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySQL - ERROR 1044 bei erstellen einer Datenbank _youngenterpriser_ Datenbanken 2 05.02.2008 17:56
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
MySQL Befehle aus Datei lesen Lloyd Larkin PHP Tipps 2006 9 07.12.2006 12:27
Von MySQL 4 auf MySQL 5 Beatbox Datenbanken 4 21.08.2006 08:57
PHP 5.1.2 mySQL 5.0.19 MS-SQL 2005 IIS 6.0 Shakaar PHP-Fortgeschrittene 10 26.03.2006 22:23
PHP, MySQL installieren frankys9 PHP Tipps 2006 10 16.03.2006 16:05
Kein Zugriff über ODBC mit der IP-Adresse auf MySql DB Datenbanken 4 09.02.2006 11:04
[Erledigt] Mysql 4.1.x unter php 4.3.9 Datenbanken 3 15.11.2005 13:49
Schnittstelle zwischen PHP und MySQL klappt net !!! Datenbanken 16 16.10.2005 14:24
[Erledigt] not allowed to connect to this MySQL server PHP Tipps 2005-2 2 23.09.2005 18:34
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
MYSQL läuft nur wenn /tmp auf 777 Datenbanken 5 06.07.2005 08:38
mysql root passwort vergessen Datenbanken 1 29.05.2005 11:33
Access denied for user: '@localhost' / SYSTEM@localhost Datenbanken 0 10.11.2004 20:35
[Erledigt] PHP5 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a m p; MySQL Datenbanken 5 01.08.2004 05:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql befehle filtern, php mysql befehle filtern, sql select [ steuerzeichen magic_quotes.gpc, gästebucheinträge php verhindern von php code, mysql query letzten gästebucheinträge eines users, mysql letzten gästebucheinträge eines users

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:44 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.