Postgres-Datenbank zugaenglich machen
Postgres-Datenbank zugaenglich machen
am 06.11.2004 13:24:06 von Sabine Baer
Hallo,
als jemand, der weder von php noch von webservern eine Ahnung hat, ist
es mir in mehrwoechiger Bastelei gelungen (unreproduzierbar ;-) ),
einen Apache-1.3.31 und php4 aufzusetzen, die sich auch auf irgeneine
Art und Weise verstehen.
Bevor ich mich aber weiter mit php abquaele, habe ich eine
grundsaetzliche Frage, ob ich damit ueberhaupt das erreichen kann, was
ich will.
Ich habe eine Postgres-Datenbank, auf die eine Handvoll Leute
zugreifen koennen sollen.
Und zwar sollen sie mit der DB 'spielen', um herauszufinden, ob sie
ueberhaupt das liefern kann, was sie liefern soll.
D. h., jeder soll Abfragen formulieren koennen, wie er will.
Nun habe ich den Eindruck (sic), dass dieses 'php' vorformulierte
Abfragen (und vielleicht auch deren Ergebnis) anbietet, die ich selbst
erstellen muss und die dann eben durch mich begrenzt waeren. Genau das
will ich aber nicht, es waere also eine voellig ueberfluessige
Quaelerei ;-)
Zusaetzliche Eigenheiten sind:
- meine Installation(en) liegt unter Linux vor, die potentiellen
'Spieler' nutzen aber Windows.ich.weiss.nicht.was.
- mein 'System' besteht aus zwei Rechnern, A und B.
A ist der 'vordere', der einen Internetzugang aufbaut, B der
'hintere', der mittels Masquerading durch A hindurch verbunden ist.
- die Datenbank liegt auf B.
- z. Zt. laeuft auf beiden ein Apache, zunaechst erreichbar ist A, und
durch einen Link dann B.
Nur hier ist auch php installiert, nur hier 'versteht' der Apache
'php-isch'.
Ich kann problemlos von A mit psql auf die Datenbank auf B zugreifen,
aber ich bezweifele, dass es 'von Aussen' klappen wuerde, da ich nur
eine einzige $$.dyndns.org Adresse habe, und mit dieser habe ich es
auch von A aus nicht hingekriegt.
(Dass natuerlich dann andere Clients auf der Nutzerseite vorhanden
sein muessen, weiss ich, das waere aber erst der naechste Schritt)
Ueber einen Webserver schiene mir das eine ganz elegante Loesung zu
sein, weshalb ich jetzt bei php haengengeblieben bin und frage, ob das
ueberhaupt sinnvoll ist.
Also, weil ich das alles vielleicht etwas unuebersichtlich dargestellt
habe, die eigentliche Frage:
Kann ich php nutzen, wenn ich eine Postgres-Datenbank so zugaenglich
machen will, dass jeder Nutzer aus einem www.-Browser heraus Fragen an
die Datenbank nach Gusto formulieren kann und das Ergebnis geliefert
bekommt?
Sabine
--
"Vielleicht", sagte Pu. "Manchmal ist es eins, und manchmal ist es
keins. Bei Fusspuren kann man nie wissen."
(A. A. Milne, Pu der Bär)
Re: Postgres-Datenbank zugaenglich machen
am 06.11.2004 14:22:38 von Niels Braczek
Sabine Baer schrieb:
> Kann ich php nutzen, wenn ich eine Postgres-Datenbank so zugaenglich
> machen will, dass jeder Nutzer aus einem www.-Browser heraus Fragen an
> die Datenbank nach Gusto formulieren kann und das Ergebnis geliefert
> bekommt?
Ja, denn du kannst die Anfrage des benutzers ungefiltert an das DBMS
weitergeben. Allerdings ist das sehr gefährlich, weil du dann nicht
kontrollieren kannst, *was* mit deiner Datenbank passiert. Ein DROP
TABLE ist dann genauso einfach wie ein SELECT. Einiges wirst du abfangen
können, aber mit Sicherheit nicht alles. Das ist auch der Grund, warum
du den Eindruck bekamst, PHP könne nur mit vorformulierten Abfragen
umgehen: Das ist sicher und wird deshalb fast ausschließlich so gemacht.
Du solltest vielleicht erwägen, einen 'Abfrage-Generator' zu bauen. Wenn
du alle Schlüsselwörter vorgibst und nur die individuellen Angaben vom
Beutzer holst, kannst du die Sicherheit erheblich erhöhen. Ansatz:
Stelle dir folgendes Formular vor:
SELECT [___]
FROM [___]
WHERE [___]
Die Eingaben kannst du dann darauf überprüfen, ob sie DB-Schlüsselworte
enthalten (und dann ablehnen), und anschließend die Abfrage
zusammenbauen (und zur Kontrolle ausgeben).
MfG
Niels
--
There won't be anything we won't say to people to try and convince
them that our way is the way to go. [Bill Gates]
Re: Postgres-Datenbank zugaenglich machen
am 06.11.2004 15:00:56 von Sabine Baer
On Sat, 6 Nov 2004 14:22:38 +0100, Niels Braczek wrote:
[...]
> Ja, denn du kannst die Anfrage des benutzers ungefiltert an das DBMS
> weitergeben. Allerdings ist das sehr gefährlich, weil du dann nicht
> kontrollieren kannst, *was* mit deiner Datenbank passiert. Ein DROP
> TABLE ist dann genauso einfach wie ein SELECT. Einiges wirst du abfangen
> können, aber mit Sicherheit nicht alles. Das ist auch der Grund, warum
> du den Eindruck bekamst, PHP könne nur mit vorformulierten Abfragen
> umgehen: Das ist sicher und wird deshalb fast ausschließlich so gemacht.
Verstehe. Nun, die Datenbank, um die es geht, ust die 'Uebersetzung'
einer Excel-Tabelle, die von den potentiellen Nutzern und mir
gemeinsam erstellt wurde, in einer dreijaehrigen Arbeit, die aber
nicht so recht dem Umfang dieser Arbeit entsprechend ausgenutzt werden
kann, weshalb diese Uebersetzung nach SQL nun ausprobiert und ggf.
erweitert bzw. umgebaut werden soll.
Wenn sie die tables droppen - ich schreibe sie nicht nochmal.
[Abfrage-Generator]
Gegen versehentliche Dummheiten sicher eine vernuenftige Sicherung.
Vielen Dank fuer Deine Antwort, ich werde dann mal dran (an php)
bleiben.
Sabine
--
Wir sind alle der Gnade eines herabfallenden Dachziegels ausgeliefert.
Uns bleibt nur das Bild Jupiters, wie er umhergeht und Dachziegel
lockert, die dann auf einen Limonadeverkaeufer oder auf Caesar fallen.
(Thornton Wilder, Die Iden des Maerz)
Re: Postgres-Datenbank zugaenglich machen
am 06.11.2004 15:35:31 von Heiko Kuerschner
Sabine Baer schrieb:
> Ich habe eine Postgres-Datenbank, auf die eine Handvoll Leute
> zugreifen koennen sollen.
> Und zwar sollen sie mit der DB 'spielen', um herauszufinden, ob sie
> ueberhaupt das liefern kann, was sie liefern soll.
> D. h., jeder soll Abfragen formulieren koennen, wie er will.
>
> Nun habe ich den Eindruck (sic), dass dieses 'php' vorformulierte
> Abfragen (und vielleicht auch deren Ergebnis) anbietet, die ich selbst
> erstellen muss und die dann eben durch mich begrenzt waeren. Genau das
> will ich aber nicht, es waere also eine voellig ueberfluessige
> Quaelerei ;-)
>
> Zusaetzliche Eigenheiten sind:
>
> - meine Installation(en) liegt unter Linux vor, die potentiellen
> 'Spieler' nutzen aber Windows.ich.weiss.nicht.was.
Da würde ich Putty und einen Shellaccount unter Linux nutzen.
Evtl. statt /bin/*sh inen gleichen die Postgress-Shell als Loginshell
vorsetzen.
Mit PHP kann man auch ein kleines Frontend schreiben, aber das sollte
man die Rechte an den Datenbanken sehr genau setzen und das Frontend
mit Login versehen und Username/Passwort des Eingeloggten statt des
Webservers bei den Zugriffen aud die Datenbank verwenden.
> - mein 'System' besteht aus zwei Rechnern, A und B.
> A ist der 'vordere', der einen Internetzugang aufbaut, B der
> 'hintere', der mittels Masquerading durch A hindurch verbunden ist.
>
> - die Datenbank liegt auf B.
>
> - z. Zt. laeuft auf beiden ein Apache, zunaechst erreichbar ist A, und
> durch einen Link dann B.
> Nur hier ist auch php installiert, nur hier 'versteht' der Apache
> 'php-isch'.
Gib ihnen ssh-Zugang mit psql als Login-Shell und sie können sich dann
an der DB austoben.
Hint: Mache einen SQL-Dump, das minimiert den Aufwand vor
versehentlichen drops.
--
Kürsche
Wenn's 'ner net gwittern tun tut ;)
Linux/*BSD-Anleitungen, Forum und Chat: www.newbie-net.de
HTML per Script validieren: www.unneraans.de/html-validator.sh/
Re: Postgres-Datenbank zugaenglich machen
am 06.11.2004 21:37:26 von gregor herrmann
On 6 Nov 2004 12:24:06 GMT, Sabine Baer wrote:
> Ich habe eine Postgres-Datenbank, auf die eine Handvoll Leute
> zugreifen koennen sollen.
> Und zwar sollen sie mit der DB 'spielen', um herauszufinden, ob sie
> ueberhaupt das liefern kann, was sie liefern soll.
> D. h., jeder soll Abfragen formulieren koennen, wie er will.
1) in postgres user mit vernuenftigen rechten anlegen.
2) phppgadmin installieren, da koennen sich die user dann einloggen und
nur das tun was sie von der datenbank her duerfen.
gregor, fup2p, weil wenig php-bezug
Re: Postgres-Datenbank zugaenglich machen
am 07.11.2004 18:45:54 von Sabine Baer
On Sat, 06 Nov 2004 15:35:31 +0100, Heiko Kuerschner wrote:
[...]
>> Zusaetzliche Eigenheiten sind:
>>
>> - meine Installation(en) liegt unter Linux vor, die potentiellen
>> 'Spieler' nutzen aber Windows.ich.weiss.nicht.was.
>
> Da würde ich Putty und einen Shellaccount unter Linux nutzen.
Klingt sehr verlockend, Terminal-Host-Verbindungen sind sowieso klarer
als Client-Server-Loesungen.
> Evtl. statt /bin/*sh inen gleichen die Postgress-Shell als Loginshell
> vorsetzen.
Klasse Idee, danke.
> Mit PHP kann man auch ein kleines Frontend schreiben, aber das sollte
> man die Rechte an den Datenbanken sehr genau setzen und das Frontend
> mit Login versehen und Username/Passwort des Eingeloggten statt des
> Webservers bei den Zugriffen aud die Datenbank verwenden.
OK, jetzt habe ich erstmal den Zugriff ganz ohne Browser, html und php
realisiert, so dass man sofort bei der Datenbank ankommt. (allerdings
nur ueber einen befristeten telnet-Zugang, den meine Tochter von 100
km (sic!) weiter entfernt, und angeleitet ueber Telefon, ausprobieren
musste :-), der Rechner A hat keinen sshd.)
Das mit php kommt denn auch noch.
Vielen Dank.
Sabine
--
"Vielleicht", sagte Pu. "Manchmal ist es eins, und manchmal ist es
keins. Bei Fusspuren kann man nie wissen."
(A. A. Milne, Pu der Bär)
Re: Postgres-Datenbank zugaenglich machen
am 07.11.2004 23:22:31 von Matthias Esken
Sabine Baer schrieb:
> OK, jetzt habe ich erstmal den Zugriff ganz ohne Browser, html und php
> realisiert, so dass man sofort bei der Datenbank ankommt. (allerdings
> nur ueber einen befristeten telnet-Zugang, den meine Tochter von 100
> km (sic!) weiter entfernt, und angeleitet ueber Telefon, ausprobieren
> musste :-), der Rechner A hat keinen sshd.)
Oha, kein sshd? Sollen wir dann die Passwörter ans schwarze Brett hängen
oder machst du das selber?
Na gut, übertreiben wir es mal nicht, aber sei dir bitte dessen bewusst,
dass Telnet ziemlich offen ist.
Gruß,
Matthias
Re: Postgres-Datenbank zugaenglich machen
am 08.11.2004 04:46:01 von Sabine Baer
On Sun, 07 Nov 2004 23:22:31 +0100, Matthias Esken wrote:
[...]
> Oha, kein sshd? Sollen wir dann die Passwörter ans schwarze Brett hängen
> oder machst du das selber?
>
> Na gut, übertreiben wir es mal nicht, aber sei dir bitte dessen bewusst,
> dass Telnet ziemlich offen ist.
Ja, danke ich weiss. sshd ist deshalb auf diesem Rechner (noch) nicht,
weil die Installation bisher nicht geklappt hat.
Flup2p wegen OT
Sabine
--
And, as usual, the outbreak was over before the epidemiologists
arrived. (N.N.)