Schrift
[thread]3654[/thread]

PostgreSQL stored procedures ansprechen: wie kann ich das mit Perl managen?



<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten
pug
 2006-01-20 15:37
#33945 #33945
User since
2005-08-17
91 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,
nun nachdem mein DB-Projekt schon etwas vorangeschritten ist, erfahre ich von meinem Prof, daß er Perl:DBI für unsicher hält und die Prozeduren zum füllen der Datenbank mit selbst definierten stored procedures realisiert sehen will. Nun dem Menschen Willen ist sein Himmelreich und dem von Chefs und Profs sowieso. Also mache ich das, nur wie. Wenn ich auf meinem DB-Server eine Prozedur definiert habe, wie kann ich diese von meinem Skript aus aufrufen.

Und was ist von der Argumentation zu halten, daß Skripte oder Prozesse, die von Web-Usern angestoßen bzw. aufgerufen werden (also Perl/CGI-Skripte), daß diese Skripte eben keine Schreibrechte auf Datenbanken haben dürften?

Gruss Christian
Ein Betriebssystem sie zu knechten, sie alle zu finden, Ins Dunkel zu treiben und ewig zu binden.

William Gates III
pq
 2006-01-20 16:01
#33946 #33946
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=pug,20.01.2006, 14:37]nun nachdem mein DB-Projekt schon etwas vorangeschritten ist, erfahre ich von meinem Prof, daß er Perl:DBI für unsicher hält[/quote]
hmm, was ist das für ein prof?
DBI ist nicht per se unsicher. wenn du mit platzhaltern arbeitest, bist
du auf der sicheren seite.
Quote
Wenn ich auf meinem DB-Server eine Prozedur definiert habe, wie kann ich diese von meinem Skript aus aufrufen.

auch über DBI.
Quote
Und was ist von der Argumentation zu halten, daß Skripte oder Prozesse, die von Web-Usern angestoßen bzw. aufgerufen werden (also Perl/CGI-Skripte), daß diese Skripte eben keine Schreibrechte auf Datenbanken haben dürften

finde ich als generelle aussage sinnfrei. solange du im skript entscheidest,
welche statements du an die datenbank schickst, hast du kein problem.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Taulmarill
 2006-01-20 16:23
#33947 #33947
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
wenn ein script keine schreibrechte hat, kann es auch keine daten speichern. so liessen sich foren wie dieses hier aber nicht entwickeln. damit ein forum funktoiniert, muss des user in der lage sein, daten zu speichern, und dafür braucht man? na? genau! schreibrechte :)

so einfach kann das sein...
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
pug
 2006-01-20 16:27
#33948 #33948
User since
2005-08-17
91 Artikel
BenutzerIn
[default_avatar]
Der Prof ist sonst eigentlich ganz iO, aber kein Anhänger von Skript-Sprachen glaube ich. Nachricht an Strat: das ist ein anderer Prof als der, den Du ansprayen wolltest ;-)

Wie sieht die Syntax eines solchen Funktionsaufrufs aus? Sagen wir die Funktion heist "untersuche_name".

Gruss Christian
Ein Betriebssystem sie zu knechten, sie alle zu finden, Ins Dunkel zu treiben und ewig zu binden.

William Gates III
nepos
 2006-01-20 21:23
#33949 #33949
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, also zu Stored Procedures steht in der DBI-Doku (ja ich weiss, kein DBI benutzen, aber wie bitte willst sonst mit der DB kommunizieren? ;)):
Quote
"func"
            $h->func(@func_arguments, $func_name);

          The "func" method can be used to call private non-
          standard and non-portable methods implemented by the
          driver. Note that the function name is given as the
          last argument.

          This method is not directly related to calling stored
          procedures.  Calling stored procedures is currently
          not defined by the DBI.  Some drivers, such as
          DBD::Oracle, support it in non-portable ways.  See
          driver documentation for more details.


Das heisst also, du musst erstmal deinen DB-Treiber checken, ob der sowas unterstuetzt. Allerdings verstehe ich auch nicht, was an stored procedures nun sicherer sein soll. Die Werte musst du ja nach wie vor uebergeben, nur werdens dann halt in der procedure verarbeitet.
Ausserdem, was waere besser, wenn du die DB z.B. von einem in C geschriebenen Programm befuellen muesstest? Die Sicherheitsprobleme bleiben die gleichen...\n\n

<!--EDIT|nepos|1137785071-->
pug
 2006-01-20 22:13
#33950 #33950
User since
2005-08-17
91 Artikel
BenutzerIn
[default_avatar]
Ohh, frag mich ned. Ich kann dieser Argumentation auch nicht ganz folgen. Ich glaube er favorisiert halt Java-Servlets .... oder so.

Aber vielen Dank auch. Da werde ich mich morgen ans Werk machen.

Gruss Christian
Ein Betriebssystem sie zu knechten, sie alle zu finden, Ins Dunkel zu treiben und ewig zu binden.

William Gates III
ptk
 2006-01-21 03:02
#33951 #33951
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=nepos,20.01.2006, 20:23]Ausserdem, was waere besser, wenn du die DB z.B. von einem in C geschriebenen Programm befuellen muesstest? Die Sicherheitsprobleme bleiben die gleichen...[/quote]
Ganz im Gegenteil: eher sind Perl-Skripte (Stichwort: Taint-Modus) sicherer als C-Programme (Stichwort: Buffer overflows).
pug
 2006-01-22 14:22
#33952 #33952
User since
2005-08-17
91 Artikel
BenutzerIn
[default_avatar]
Das würde mich im Detail doch mal interessieren, wie die Abläufe bei einer JDBC-Abfrage mit Java, einer ODBC-Abfrage mit C und einer DBI oder ODBC-Abfrage mit Perl ist, wo die Stärken und Schwächen der verschiedenen Methoden und die Sicherheitsrisiken liegen. Gibt es da irgendwo im Netz eine "neutrale" Beurteilung von solchen Methoden?

Und warum die Insert-Methode mit
Quote
qq{INSERT INTO kunden ( kid,...

sicherer ist als die Parameter direkt einzutragen.

Zu meinem Studien-Projekt muss ich noch sagen, daß der Fokus auf Datenbanken liegt, es von der Warte aus schon Sinn macht, wenn ich so viel wie möglich DB-Server intern mache.

Gruss Christian
Ein Betriebssystem sie zu knechten, sie alle zu finden, Ins Dunkel zu treiben und ewig zu binden.

William Gates III
ptk
 2006-01-22 15:24
#33953 #33953
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Was meinst du mit "direkt eintragen"?
nepos
 2006-01-22 16:11
#33954 #33954
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Sowas vermutlich:
Code: (dl )
INSERT INTO kunden(kid,name) VALUES($kid,$name)
<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten



View all threads created 2006-01-20 15:37.