ich habe bei meinen Server-Anbieter einen MySQL-Datenbank-User mit
Schreibrechten.
In meiner Web-Anwendung soll der User direkt SQL-SELECT-Anweisungen
übergeben können. Es soll aber so nur ein lesender Zugriff möglich sein,
d.h. der User soll kein "DELETE" oder "UPDATE" etc. ausführen können. Einen
weiteren MySQL-User ohne Schreibrechte kann ich leider nicht so ohne
weiteres anlegen.
Gibt es eine Möglichkeit die Datenbank etwa über mysql_pconnect() o.ä. als
read-only mit nur Leserechten zu öffnen?
Falls nicht: Es müsste eigentlich IMHO für die Sicherheit reichen, wenn ich
überprüfe dass das übergebene SQL-Statement mit "SELECT" anfängt, und
keinen Strichpunkt enthält um evtl. andere SQL-Anweisungen dazu
einzuschleusen. Oder überseh ich da was gravierendes?
(Mal abgesehen davon dass Abfragen wie
vorname = "sep;pl"> nicht möglich wären, aber das wär egal.)
(Und nein, leider kann ich nicht alle möglichen Optionen selber parsen und
mich so um die Ãbergabe einer SQL-Anweisung vom Webuser
vorbeiprogrammieren).
mfg,
Bernhard
Re: MySQL-Datenbank read-only öffnen
am 09.10.2004 00:15:17 von Niels Braczek
Bernhard Berger schrieb:
> Gibt es eine Möglichkeit die Datenbank etwa über mysql_pconnect()
> o.ä. als read-only mit nur Leserechten zu öffnen?
Das wäre mir neu.
> Falls nicht: Es müsste eigentlich IMHO für die Sicherheit reichen,
> wenn ich überprüfe dass das übergebene SQL-Statement mit "SELECT"
> anfängt, und keinen Strichpunkt enthält um evtl. andere
> SQL-Anweisungen dazu einzuschleusen. Oder überseh ich da was
> gravierendes? (Mal abgesehen davon dass Abfragen wie
> FROM tabelle WHERE vorname = "sep;pl"> nicht möglich wären, aber das
> wär egal.)
Das Semikolon kannst du ruhig zulassen:
16.2. Wieso kann ich mehrere, durch Semikolon getrennte Statements nicht
ausführen?
http://www.dclp-faq.de/q/q-sql-statements.html
> (Und nein, leider kann ich nicht alle möglichen Optionen selber
> parsen und mich so um die Übergabe einer SQL-Anweisung vom Webuser
> vorbeiprogrammieren).
Das Sicherste ist natürlich, wenn der Anwender nicht die SQL-Query
selbst formuliert, sondern aus den zugelassenen Optionen
'zusammenklickt'.
MfG
Niels
--
Wenn Word für Längeres geeignet wäre, würde es nicht
Word, sondern Sentence, Page oder Article heißen.
[Matthias Mühlich de.comp.text.tex]
Re: MySQL-Datenbank read-only öffnen
am 09.10.2004 16:12:28 von Uli Honal
Bernhard Berger wrote:
> In meiner Web-Anwendung soll der User direkt SQL-SELECT-Anweisungen
> übergeben können. Es soll aber so nur ein lesender Zugriff m=C3=
=B6glich sein,
> d.h. der User soll kein "DELETE" oder "UPDATE" etc. ausführen k=C3=
=B6nnen.
> [..]
>=20
> Es müsste eigentlich IMHO für die Sicherheit reichen, wenn ic=
h
> überprüfe dass das übergebene SQL-Statement mit "SELECT"=
anfängt, und
> keinen Strichpunkt enthält um evtl. andere SQL-Anweisungen dazu
> einzuschleusen. Oder überseh ich da was gravierendes?
Vielleicht möchtest Du SELECT INTO ausschliessen. Ausserdem wür=
de ich=20
das MySQL Manual nochmal nach Funktionen durchsehen, die man Usern=20
verbieten möchte, z.B. BENCHMARK(). Generell besteht die Gefahr, das=
s=20
ein böser[tm] User Deinen DB-Server durch viel Last und Lockings in =
die Knie zwingt / für andere User unbenutzbar macht.
HTH,
-Uli.
Re: MySQL-Datenbank read-only öffnen
am 12.10.2004 21:42:27 von Bernhard Berger
ok danke für eure beiden Antworten, werde ich so einbauen.