Seite 2 von 2

Re: Einfache Webprogrammierung mit python

Verfasst: Mittwoch 15. Juni 2011, 17:15
von cofi
@daemonTutorials: Und jetzt bitte in einer Version, die nicht für SQL Injections anfällig ist. Prepared Statements zu nutzen ist doch gerade in Python unheimlich einfach.

Re: Einfache Webprogrammierung mit python

Verfasst: Mittwoch 15. Juni 2011, 17:24
von derdon

Re: Einfache Webprogrammierung mit python

Verfasst: Mittwoch 15. Juni 2011, 17:28
von jens
Oder besser gleich ein ORM nehmen... Und doch Templates... Also doch besser direkt mit Django anfangen... ;)

Re: Einfache Webprogrammierung mit python

Verfasst: Mittwoch 15. Juni 2011, 17:29
von daemonTutorials
cofi hat geschrieben:@daemonTutorials: Und jetzt bitte in einer Version, die nicht für SQL Injections anfällig ist. Prepared Statements zu nutzen ist doch gerade in Python unheimlich einfach.
Sorry, hatte erst kürzlich was mit SQL und Python zutun und da habe ich 'sqlite3' benutzt und das war in einer abgeriegelten Web-App für den HomePC. Da musste ich über das nicht nachdenken.

Also, eine Frage: Wie macht man "Prepared Statements"?
Ich habe die ID schon über '%' eingefügt, wie weiter?
Ach und bei PHP, da habe ich es total vergessen, sorry!

Re: Einfache Webprogrammierung mit python

Verfasst: Mittwoch 15. Juni 2011, 17:43
von deets
Nee, nicht wirklich. Die haben ja keine SQL-Injection verbrochen, sondern authentizitaet mit authorisation gleichgesetzt. Sicher auch ein beliebter Fehler (siehe zB den "Facebook-Killer" Diaspora), aber noch ein klitzekleines bisschen besser als SQL-Injection.

Re: Einfache Webprogrammierung mit python

Verfasst: Mittwoch 15. Juni 2011, 17:46
von deets
daemonTutorials hat geschrieben: Also, eine Frage: Wie macht man "Prepared Statements"?
Das Prinzip ist ganz simpel:

Code: Alles auswählen

cursor.execute(statement, (p1, p2, ...))
In dem statement muessen dann ebenfalls Platzhalter vorkommen. Leider ist das abhaenging von der verwendeten Datenbank (ein weiterer Grund, SQLAlchemy zu benutzen).

ZB "select * from table where column = %s" fuer mysqj. Dabei ist egal, was der Parameter fuer einen Typ hat! Das %s ist immer ein Platzhalter fuer jeden Typ.

Re: Einfache Webprogrammierung mit python

Verfasst: Mittwoch 15. Juni 2011, 19:08
von noisefloor
Hallo,
Coder hat geschrieben:Wie trennt man am Besten die beiden Teile?
Wie alles andere bei Python auch: das ganze in kleine Häppchen unterteilen und mit entsprechenden Modulen / Klassen / Funktionen bereitstellen.

Im Falle einer Webapplikation wäre das: die "Hauptdatei", welcher per WSGI eingebunden wird. Hier werden die Routen definiert und die zur Route gehörige Funktion. Ein eigenes Modul (bzw. mindestens Funktionen), welches die "Datenverarbeitung" vornimmt. Was auch immer "Datenverarbeitung" ist (Berechnung, PDF generieren, Datenbankanbindung etc.). Und mindestens ein Template, was dann zum Generieren der Ausgabe dient.

MVC-Prinzip halt. Jetzt wird vielleicht auch klar, warum Django bei einem neuen Projekt drei Dateien anlegt (AFAIK). :-)

Gruß, noisefloor