Datenbankverbindung nur lesend öffnen
-
wo ist das Problem, einfach keine INSERT-, REPLACE-, UPDATE-, etc-Statements zu verwenden?
Nur lesend ist dahingehend oft sinnlos, da du in der Regel auch Daten in die Datenbank schreiben musst, um sie auch lesen zu können
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Themen rund um den PC in das Forum Datenbanken verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
zwutz schrieb:
...
Nur lesend ist dahingehend oft sinnlos, da du in der Regel auch Daten in die Datenbank schreiben musst, um sie auch lesen zu können...
MySQL bietet ja auch die Möglichkeit bestimmten Benutzern nur bestimmte Abfragearten zu erlauben (bspw. select_priv, insert_priv ...)
-
ja, ich weiß. Aber eine Einschränkung der Rechte innerhalb der DB macht dann Sinn, wenn man als DB_Admin Unbefugten den Zugriff verweigern will. Aber hier sehe ich keinen Grund dazu, einen eingeschränkten Nutzer zu verwenden. Wenn man aber ein Skript schreibt, dass eine DB-Anbindung benötigt, dann kann man doch einfach auf Statements verzichten, die schreibenden Zugriff erfordern
also nochmal:
wo ist das Problem, einfach keine INSERT-, REPLACE-, UPDATE-, etc-Statements zu verwenden?
-
zwutz schrieb:
ja, ich weiß. Aber eine Einschränkung der Rechte innerhalb der DB macht dann Sinn, wenn man als DB_Admin Unbefugten den Zugriff verweigern will. Aber hier sehe ich keinen Grund dazu, einen eingeschränkten Nutzer zu verwenden. Wenn man aber ein Skript schreibt, dass eine DB-Anbindung benötigt, dann kann man doch einfach auf Statements verzichten, die schreibenden Zugriff erfordern
also nochmal:
wo ist das Problem, einfach keine INSERT-, REPLACE-, UPDATE-, etc-Statements zu verwenden?halt dich bitte aus meinem thread raus. du hast keine ahnnung von sql-injection.
-
mei s kuh el schrieb:
zwutz schrieb:
ja, ich weiß. Aber eine Einschränkung der Rechte innerhalb der DB macht dann Sinn, wenn man als DB_Admin Unbefugten den Zugriff verweigern will. Aber hier sehe ich keinen Grund dazu, einen eingeschränkten Nutzer zu verwenden. Wenn man aber ein Skript schreibt, dass eine DB-Anbindung benötigt, dann kann man doch einfach auf Statements verzichten, die schreibenden Zugriff erfordern
also nochmal:
wo ist das Problem, einfach keine INSERT-, REPLACE-, UPDATE-, etc-Statements zu verwenden?halt dich bitte aus meinem thread raus. du hast keine ahnnung von sql-injection.
Wenn du davor Angst hast, solltest du deine Eingaben die von "unsichereren" Quellen kommen, gründlich darauf untersuchen. PHP bietet ja auch entsprechende Optionen, um die dümmsten Fehler im vorhinein zu unterdrücken. Schau dir mal magic_quotes_gpc an!!!
-
mei s kuh el schrieb:
halt dich bitte aus meinem thread raus. du hast keine ahnnung von sql-injection.
wie bitte? Auch noch frech werden?
Du erhoffst dir daduch wohl die Arbeit zu sparen, Prepared Statements oder ein simples escapen zu verwenden, und dann auch noch vor SQL-Injections gewappnet zu sein?
Was ist, wenn es jemand schafft, durch eine Injection sicherheitsrelevante Daten aus deiner DB auszulesen? Damit ist dein ganzes Konzept ebenso nutzlos wie naiv
-
grimmsen. ich werde keine technik verwenden, die mit php6 wieder abgeschafft ist und die 99% der programmierer nicht benutzen. wenn ich magic_quotes aktiviere, laufen 99% meiner drittanbieter-scripte auf meinem webspace nicht. danke für den hinweis, aber das ist keine option.
zwutz: du hast keine ahnung, was ich machen will, hast aber trotzdem ne meinung zu allem (das gilt in diesem und in anderen threads). wenn ich prepared statements verwenden wollte, müsste ich etwa 1000 davon haben. man kann zu komplexe abfragen mit meinem script machen. da kann ich keine vordefinierten abfragen verwenden.
meine anwendung liest daten aus einer tabelle. man kann umfangreiche filter einstellen um sich nur bestimmte teile zurückgeben zu lassen. im php-script steht fest drin, welche tabelle benutzt wird. es ist mir völlig egal ob jemand die komplette tabelle ausliest. das steht nichts sicherheitsrelevantes drin.
gäbe es bei mir die möglichkeit eine nur-lesend-datenbankverbindung aufzubauen oder einen benutzer einzurichten, der nur lesezugriff hat, könnte ich dem php-script bequem sql-queries übergeben, die es einfach zur datenbank weiterleitet. drop, delte, update, insert usw. würden einfach bei der datenbank abblitzen.
jetzt muss ich mich im php-script aber um die sicherheit kümmern. ich habe aber bereits eine lösung dafür.
-
na endlich hast du es geschafft zu sagen, was du vorhast... hat ja lang genug gedauert...
Trotzdem bleibt noch die Möglichkeit, die Daten, die du bekommst, entsprechend zu maskieren. Der Aufwand sollte eher gering sein, im Vergleich zum Nutzen.
Und ja, ein entsprechender DB-User wär evtl besser, aber befreit dich trotzdem nicht völlig vor der Pflicht, alle Daten, die du von extern bekommst, zu prüfen (und wenns nur in Bezug auf die Validität ist)btw. bezweifle ich stark, dass du anhand meiner Beiträge hier auf mein Fachwissen schließen kannst. Außerdem steht es dir nicht zu, entsprechende Mutmaßungen zu äußern
-
Kannst es ja auch "händisch" machen:
http://de3.php.net/manual/en/function.mysql-escape-string.php
Der Befehl sollte auch in PHP6 vorhanden sein.