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

25-07-2011, 14:40
|
|
Lennynero
Registrierter Benutzer
|
|
Registriert seit: Sep 2007
Beiträge: 121
|
|
MySQL, Apache oder PHP-Config: Nur eine Abfrage auf einmal zulassen?
Hallo,
man kann ja über PHP und anderen Tools mehrere SQL-Anweisungen durch Semikolon getrennt abfeuern, die dann nacheinander abgearbeitet werden.
Ich habe noch dunkel in Erinnerung, das es möglich ist das Ganze so zu konfigurieren, das nur noch eine Anweisung verarbeitet wird und alles nach dem ersten Semikolon (sofern es nicht in Hochkomma steht) ignoriert wird.
Erinnere ich mich da richtig und falls ja: wo finde ich die entsprechende Konfigrationseinstellung?
Vielen Dank für Hilfe,
Markus
|

09-12-2011, 21:01
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
Deine Frage ist zu ungenau.
Die PHP-MySQL-Extension kann von Haus aus keine multiplen Statements. Es gibt scheinbar ein Flag was das steuert ( PHP: mysql_query - Manual) aber vermutlich nur in aktuellen MySQL-Versionen.
Bzgl. PDO konnte ich spontan gar nichts finden.
PMA hat einen eigenen Parser und splittet mehrere Queries auf.
Es macht aber auch eigentlich keinen Sinn innerhalb von Code mehrere Statements gleichzeitig auszuführen. Geschweige denn, dass es Sinn machen würde, mehrere Statements zu übergeben, aber dann nur das erste ausführen zu lassen.
Anstatt das hier angesprochene Problem zu lösen, würde ich noch einen Schritt weiter zurück gehen, und dein komplettes Vorgehen noch mal überdenken.
|

09-12-2011, 21:21
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.311
|
|
MySQLi beherrscht mehrfache Abfragen über die Methode multi_query. Vielleicht liegt es ja daran????
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

12-12-2011, 11:23
|
|
Lennynero
Registrierter Benutzer
|
|
Registriert seit: Sep 2007
Beiträge: 121
|
|
Zitat:
Zitat von ghostgambler
Deine Frage ist zu ungenau.
|
Ja, sorry, DBMS nicht erwähnt. Mea Culpa.
Zitat:
Zitat von ghostgambler
Es macht aber auch eigentlich keinen Sinn innerhalb von Code mehrere Statements gleichzeitig auszuführen. Geschweige denn, dass es Sinn machen würde, mehrere Statements zu übergeben, aber dann nur das erste ausführen zu lassen.
Anstatt das hier angesprochene Problem zu lösen, würde ich noch einen Schritt weiter zurück gehen, und dein komplettes Vorgehen noch mal überdenken.
|
Es ging auch nicht darum mehrere Queries zuzulassen, sondern es zu verhindern (deswegen auch meine Frage nach der Einstellungsoption, die das Ausführen auf eine Abfrage verhindert).
Von da aus ist es durchaus sinnvoll beim Ausführen darauf zu achten das eben nur die Erste ausgeführt wird. Das Alleine bringt natürlich keinen umfassenden Schutz (Natürlich sind Queries schon vor der Übergabe ans DBMS so zu bearbeiten, das niemand damit Unfug anfangen kann), es schadet aber auch mit Sicherheit nicht das DBMS entsprechend zu konfigurieren (denn wie ein potentieller Angreifer Zugriff auf die DB hat, weiß ich nicht, bzw. ist der da sicherlich sehr kreativ). 100% Sicherheit gibt das nicht, aber ein paar Prozentpunkte mehr.
Ob es übrigens Sinn oder keinen Sinn macht mehrere Queries nacheinander auszuführen, würde ich auch nicht mit einem pauschalen "macht eigentlich keinen Sinn" abtun, es gibt sicherlich Situationen in denen das auch hilfreich sein kann.
|

12-12-2011, 11:25
|
|
Lennynero
Registrierter Benutzer
|
|
Registriert seit: Sep 2007
Beiträge: 121
|
|
Zitat:
Zitat von Lennynero
Ja, sorry, DBMS nicht erwähnt. Mea Culpa.
|
Und schon wieder
Es geht um MySQL.
|

12-12-2011, 12:18
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Willst du Sicherheit, dann verwende prepared Statements.
Die veraltete mysql-Extension unterstützt gar keine Multi-Queries. Die mysqli-Extension kann dies optional über multi_query(). PDO lässt Multi-Queries immer zu. Also nett formuliert: Anfänger sollten zuerst lieber mit mysqli arbeiten. Leute mit Erfahrung können bzw. sollten zu PDO greifen.
mysql ist als tot anzusehen.
Geändert von h3ll (12-12-2011 um 12:25 Uhr)
|

12-12-2011, 12:30
|
|
Lennynero
Registrierter Benutzer
|
|
Registriert seit: Sep 2007
Beiträge: 121
|
|
Danke.
Meine Frage zielte eigentlich in erster Linie auf die Konfigutarion des MySQL Servers, nicht auf PHP-Erweiterung.
|

12-12-2011, 12:58
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Wenn du das am MySQL-Server deaktivieren _könntest_, würde sehr viel nicht mehr funktionieren. Also welchen Sinn soll das haben, außer dass du dir den Server kaputt machst?
|

12-12-2011, 13:06
|
|
Lennynero
Registrierter Benutzer
|
|
Registriert seit: Sep 2007
Beiträge: 121
|
|
Zitat:
Zitat von h3ll
Wenn du das am MySQL-Server deaktivieren _könntest_, würde sehr viel nicht mehr funktionieren. Also welchen Sinn soll das haben, außer dass du dir den Server kaputt machst?
|
Dessen war ich mir nicht bewusst.
Die Idee war es zu verhindern das jemand nicht befugtes in der Lage ist mehrere Queries auf einmal auszuführen, nicht mehr nicht weniger (und ja, mir ist durchaus bewusst das man mit einer einzigen Query schon Unfug genug anstellen kann). Wenn sich das auf einen Besucher hätte beschränken lassen, umso besser. Wenn es nicht (sinnvoll) geht, dann scheidet das halt aus. Mehr wollte ich im Grunde nicht wissen.
|
|
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
|