Hallo,
habe ein Programm geschrieben, wo ich aus verschiedenen
Datenquellen (Excel, dbase, csv usw.) Daten in eine SQLite-Datenbank ablege
Diese Daten sollen später aus der Datenbank wieder ausgelesen werden um
daraus mit Hilfe von Cheetah verschiedene Dokumente zu generieren.
Jetzt möchte ich dem Nutzer die Möglichkeit geben, die SELECT-Statements
in eine Konfigurationsdatei zu schreiben (später soll eine GUI folgen,
ich möchte aber erst ein funktionierendes Programm haben).
Meine Frage ist nun, wie ich diese Abfragen am besten gestalte?
Soll ich einfach rohe SQL Querys (Gefahr von Injections) zulassen
oder gibt es Module die das besser können?
Wäre nett, wenn ich ein paar Hinweise bekommen würde.
Danke
marlob
SQL Querys in Konfigurationsdatei
Also damit ich noch keine Lücke gefunden, bin mir aber natürlich nicht sicher
Code: Alles auswählen
if not sql.lower().strip().startswith('select'):
return '<b>Error:</b> Only "Select" permitted.'
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ist das ganze eine lokale Applikation oder eine Multi-User basierte? Bei ersterem wäre es ja ziemlich wurscht, da der Nutzer dort eh seine DB komplett einsehen oder schrotten kann, wenn er das denn will.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
ice2k3 hat geschrieben:Also damit ich noch keine Lücke gefunden, bin mir aber natürlich nicht sicherCode: Alles auswählen
if not sql.lower().strip().startswith('select'): return '<b>Error:</b> Only "Select" permitted.'
Code: Alles auswählen
select foo
from bar
where bla;
drop table bar
Wobei natürlich in der Doku steht:
Insofern sollte das wohl doch scheitern...Doku hat geschrieben: execute() will only execute a single SQL statement. If you try to execute more than one statement with it, it will raise a Warning.
Dennoch hätte ich Bauchschmerzen dabei, wenn ich dem User komplett freie Hand lass bei der Gestaltung der Queries.
Von der Handhabung der Ergebnisse mal ganz zu schweigen...
Jap, das funktioniert nicht. Das hab ich selbstverständlich getestetHyperion hat geschrieben:Wobei natürlich in der Doku steht:Insofern sollte das wohl doch scheitern...Doku hat geschrieben: execute() will only execute a single SQL statement. If you try to execute more than one statement with it, it will raise a Warning.
Geht problemlos in eine HTML-Tabelle Und mehr soll das auch nicht machen, ist nur zum Debuggen und auch nicht öffentlich erreichbar. Nur falls mal jemand zufällig darauf stößt, sollte er halt nicht gleich die ganze DB schrotten können...Hyperion hat geschrieben:Von der Handhabung der Ergebnisse mal ganz zu schweigen...
Man kann doch bei einer Datenbank nur bestimmten usern Rechte zum Lesen geben, oder?
the more they change the more they stay the same
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Nicht zwangsläufig. SQLite hat kein User-Management - ist auch nicht wirklich sinnvoll beim Einsatzgebiet von File basierten DRMS.Dav1d hat geschrieben:Man kann doch bei einer Datenbank nur bestimmten usern Rechte zum Lesen geben, oder?
Zudem nützt das ja auch noch nicht so viel, wenn man keine Authentifizierung in der Applikation hat...
Das ganze ist fürs erste eine lokale Applikation.Hyperion hat geschrieben:Ist das ganze eine lokale Applikation oder eine Multi-User basierte? Bei ersterem wäre es ja ziemlich wurscht, da der Nutzer dort eh seine DB komplett einsehen oder schrotten kann, wenn er das denn will.
Später sollen dann mehrere User zugreifen sollen.
Bei typischen Projekten bei uns, aber höchstens 2 oder 3 User.
Ich denke, das wird mit SQLite noch zu handeln sein.