php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 02-07-2005, 13:43
Seikilos
 Registrierter Benutzer
Links : Onlinestatus : Seikilos ist offline
Registriert seit: May 2003
Ort: Vor meinem Computer
Beiträge: 498
Seikilos ist zur Zeit noch ein unbeschriebenes Blatt
Standard Finde Fehler nicht

Hallo,
ich führe 3 Operationen in einem Query aus, aber ich finde den Fehler nicht, hier ist Query:
PHP-Code:
$db->query("UPDATE `hs_dir_nest` SET `rgt`=`rgt`+2 WHERE `rgt`>".$rgt";".
             
"UPDATE `hs_dir_nest` SET `lft`=`lft`+2 WHERE `lft`>".$rgt";".
             
"INSERT INTO `hs_dir_nest` SET `lft`= ".($rgt+1).", `rgt`=".($rgt+2).";"
             
); 
So sieht er ausgegeben aus:
UPDATE `hs_dir_nest` SET `rgt`=`rgt`+2 WHERE `rgt`>10;UPDATE `hs_dir_nest` SET `lft`=`lft`+2 WHERE `lft`>10;INSERT INTO `hs_dir_nest` SET `lft`= 11, `rgt`=12;

und der Fehler:
Zitat:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ';UPDATE `hs_dir_nest` SET `lft`=`lft`+2 WHERE `lft`>10;INSERT I
Ich verstehe nicht, was da nicht geht.
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 02-07-2005, 13:47
chansel0049
 Member
Links : Onlinestatus : chansel0049 ist offline
Registriert seit: Apr 2004
Beiträge: 294
chansel0049 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

MySQL läßt über PHP nur 1 Operation zu ...

d.h. keine Semikolons in Query erlaubt und maximal 1 Query je mysql_query ,....
__________________
chansel0049
----------------------------------------------------
if you've reached the bottomline - dig further!
Übersetzer gesucht? http://www.babelport.com
Mit Zitat antworten
  #3 (permalink)  
Alt 02-07-2005, 13:51
Seikilos
 Registrierter Benutzer
Links : Onlinestatus : Seikilos ist offline
Registriert seit: May 2003
Ort: Vor meinem Computer
Beiträge: 498
Seikilos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das ist mir neu, kannst du mir einen Link zu deiner Informationsquelle geben? Auf PHP.net kann ich nichts deartiges lesen.
Mit Zitat antworten
  #4 (permalink)  
Alt 02-07-2005, 13:58
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

http://www.php.net/manual/de/functio...uery.php#37870
http://tut.php-q.net/mysql-query.html#u3

Wahrscheinlich ist das so, um Injection vorzubeugen.
Mit Zitat antworten
  #5 (permalink)  
Alt 02-07-2005, 14:01
Seikilos
 Registrierter Benutzer
Links : Onlinestatus : Seikilos ist offline
Registriert seit: May 2003
Ort: Vor meinem Computer
Beiträge: 498
Seikilos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ah, ok, nun bin ich schlauer.

Aber nicht glücklicher
Mit Zitat antworten
  #6 (permalink)  
Alt 02-07-2005, 15:05
chansel0049
 Member
Links : Onlinestatus : chansel0049 ist offline
Registriert seit: Apr 2004
Beiträge: 294
chansel0049 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das macht MySQL aber auch nur bedingt sicher vor Injections
__________________
chansel0049
----------------------------------------------------
if you've reached the bottomline - dig further!
Übersetzer gesucht? http://www.babelport.com
Mit Zitat antworten
  #7 (permalink)  
Alt 02-07-2005, 15:07
Seikilos
 Registrierter Benutzer
Links : Onlinestatus : Seikilos ist offline
Registriert seit: May 2003
Ort: Vor meinem Computer
Beiträge: 498
Seikilos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Was heißt denn bedingt, wie kann man denn noch Injections machen?
Ich dachte bis dato, dass man eben ins Statement ein ; einfügt und mit eigenem Code fortfährt, was ja garnicht geht, wenn nur eine Operation ausgeführt werden kann
Mit Zitat antworten
  #8 (permalink)  
Alt 02-07-2005, 15:26
chansel0049
 Member
Links : Onlinestatus : chansel0049 ist offline
Registriert seit: Apr 2004
Beiträge: 294
chansel0049 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Es gibt noch andere Möglichkeiten, besonders mit den Neuerungen nach 4.1 per Blind Injections, aber es geht wohl auch anders glaubt gewissen Quellen

Allerdings bin ich weder ein Cracker noch Nerd genug um mit Halbwissen auf diesen Gebieten zu prahlen. Fakt ist es geht (Hab als Test mal meine LAMP Testumgebung damit lahmgelegt)

zwar kann man keine zweite Query oder mit ";#" die Query kürzen, aber es gibt schliesslich auch die möglichkeit Funktionen oder Subqueries abzusetzen

deshalb immer schön prüfen was eigentlich an Daten ankommt, ob's String oder Numeric ist und escapen wenn nötig, Dabei auch an PHPs loose Data Type Conversion denken, denn :

PHP-Code:
$test '5 ist aber ein String';
if (
== $test) {print "Danger"}; 
Ausgabe
Zitat:
Danger
__________________
chansel0049
----------------------------------------------------
if you've reached the bottomline - dig further!
Übersetzer gesucht? http://www.babelport.com
Mit Zitat antworten
  #9 (permalink)  
Alt 02-07-2005, 15:44
Payne_of_Death
 Master
Links : Onlinestatus : Payne_of_Death ist offline
Registriert seit: Dec 2002
Ort: Folterkeller Nr. 18
Beiträge: 2.953
Payne_of_Death ist zur Zeit noch ein unbeschriebenes Blatt
Payne_of_Death eine Nachricht über ICQ schicken Payne_of_Death eine Nachricht über AIM schicken Payne_of_Death eine Nachricht über Yahoo! schicken
Standard

Zitat:
Original geschrieben von Seikilos
Was heißt denn bedingt, wie kann man denn noch Injections machen?
Ich dachte bis dato, dass man eben ins Statement ein ; einfügt und mit eigenem Code fortfährt, was ja garnicht geht, wenn nur eine Operation ausgeführt werden kann
indem man z.B.: ungeprüfte Variablen in den Query String einbaut nicht nicht escaped werden......

Könnte aus Andeutung (ohne Syntax);

mysql_query(Select pm_title, pm_body FROM pm WHERE user_id=$user_id);

-------------------------------------------------------
z.B. folgendes werden bei der Situation
$user_id=$_REQUEST['user_id'];

mysql_query(Select pm_title, pm_body FROM pm WHERE user_id=$user_id);

dann übergibt einer vll. via url oder Formular 5 OR username=admin

dann würde das Statment nun so aussehen:

mysql_query(Select pm_title, pm_body FROM pm WHERE user_id=5 OR username=admin);

Indem Fall würde man ein Eigenanteil einschmuggeln welches die Query nun die eigenen PMs als auch die des Admins anzeigen würde. Ein noch harmloses Beispiel.......

Das wäre z.B. mit http://de3.php.net/manual/de/functio...ape-string.php
nicht passiert......

Wobei es unwahrscheinlich ist das username in der Table PM auftritt, jedoch nur um mal das Gefühl der Gefahr zu vermitteln die besteht wenn eine Schnittstelle zum User offen ist, die noch wissen was sie tun.

Besonders kritisch ist das ganze bei Skripts die der Öffentlichkeit zugänglich sind wie z.B. die PHPBB Forensoftware.....Wäre der Quellcode nicht öffentlich würden auch nicht diverse Bugs zum Vorschein kommen die sich eine zeitlang mit SQL Injektions abgespielt hat als auch mit ein paar PHP Funktionen die schlüpfrig waren.
__________________
MfG Payne_of_Death

Manual(s): <-| PHP | MySQL | SELFHTML |->
Merke:
Du brauchst das Rad nicht neu erfinden ! <-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

Murphy`s Importanst LAWS
Jede Lösung bringt nur neue Probleme
Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
In jedem kleinen Problem steckt ein großes, das gern raus moechte.

Geändert von Payne_of_Death (02-07-2005 um 15:47 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 02-07-2005, 16:44
chansel0049
 Member
Links : Onlinestatus : chansel0049 ist offline
Registriert seit: Apr 2004
Beiträge: 294
chansel0049 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Mensch Payne, bring leute nicht noch auf Gedanken ..

Ich seh schon irgendso ein Skriptkiddie diese Forum lesend und dann am Versuch Microsoft.com lahmzulegen
__________________
chansel0049
----------------------------------------------------
if you've reached the bottomline - dig further!
Übersetzer gesucht? http://www.babelport.com
Mit Zitat antworten
  #11 (permalink)  
Alt 02-07-2005, 22:26
xManUx
 Registrierter Benutzer
Links : Onlinestatus : xManUx ist offline
Registriert seit: Feb 2004
Beiträge: 833
xManUx ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von chansel0049
MySQL läßt über PHP nur 1 Operation zu ...

d.h. keine Semikolons in Query erlaubt und maximal 1 Query je mysql_query ,....
Richtig, was aber nicht heißen muss, dass die Class nicht in der Lage ist die ; zu explodieren! *da ne idee für meine klasse habe* ^^
__________________

Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
sondern mit den Augen das Manual zu lesen.

Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
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.

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


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

Microweber CMS

Open source, drag and drop website builder

13.01.2020 Berni | Kategorie: HTML5/ EDITOR
PhoneGap Apps mit JS, CSS3 und HTML5 erstellen ansehen PhoneGap Apps mit JS, CSS3 und HTML5 erstellen

PhoneGap, Framework zur Erstellung hybrider Applikationen für mobile Endgeräte.

13.01.2020 Berni | Kategorie: App-Entwicklung
Bo)Tickets

Bo)Tickets bietet Ihnen eine Schnittstelle für Kundenanfragen an. In dem Script definieren Sie Supportbereiche, also zum Beispiel „Technik, Buchhaltung, Support“. Ihre Kunden können dann über ein Formular eine Anfrage abschicken.

31.12.2019 bocombo | Kategorie: PHP/ Ticketsystem
 Alle PHP Scripte anzeigen

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