Funktionale Programmierung für Webanwendung

Hallo zusammen,

auf der Seite

http://funktionale-programmierung.de/2013/04/04/weba…

wird u.a. über den Sicherheitsaspekt bei rein funktionalen Programmiersprachen geschrieben.

Schließlich ist auch die Validierung von Eingaben und das Escapen von Ausgaben zumeist dem Programmierer selbst überlassen: SQL-Injections, XSS (Einschleusen von Code in fremde Webseiten durch Dritte) und andere Sicherheitslücken werden nicht auf Ebene der Programmiersprache verhindert.

Wie ist das nun in Haskel und anderen funktionalen Programmiersprachen? Sind die tatsählich gefeit vor SQL-Injection etc?

Gruß

Alex

Hallo Alex,

Wie ist das nun in Haskel und anderen funktionalen
Programmiersprachen? Sind die tatsählich gefeit vor
SQL-Injection etc?

Ich kann jetzt nur für Haskel sprechen, da ich andere funktionale Sprachen nicht gelernt habe, Ob die Programmiersprache Haskel ansich gefeit gegen SQL-Injection usw. kann ich dir so direkt auch nicht sagen, aber zumindest sind es die Webframeworks, welche in Haskell programmiert worden sind (Yesod z.B.).

Die Sprache ist mehr als eine Blick Wert, die Performance kann sich echt sehen lassen und auch die Sprachkonstrukte erleichtern viele Abläufe immens.

Wenn ich heute die Wahl der Sprache und des Frameworks, für kleine bis mittlere Webapplikationen , habe, würde meine Wahl immer auf Haskel und das Framework Yesod fallen.

Ist auf jeden Fall keine Zeitverschwendung sich mit dieser Technologie auseinander zusetzen. Haskel schlägt php um längen!

Gruß XXD

OK!
Herzlichen Dank für die Auskunft!

Hallo,

Wie ist das nun in Haskel und anderen funktionalen
Programmiersprachen? Sind die tatsählich gefeit vor
SQL-Injection etc?

Kann schon sein, dass PHP da unsicher ist (kennen mich weder mit Haskel noch mit PHP aus), aber auch Haskel erlaubt bei schlampiger Programmierung SQL Injection: http://book.realworldhaskell.org/read/using-database…

Das Beispiel unter „Simple Queries“ verwendet einen einfachen String als SQL Befehl, wenn dieser aus Benutzereingaben zusammengesetzt wird und diese mangelhaft geprüft werden ist das Tor für SQL Injection geöffnet.

Weiter unten unter „Query Parameters“ ist dann die bessere Variante erklärt, die SQL Injection ausschließt.

Bei Java als nicht funktionale Sprache ist das vergleichbar, man kann den SQL String selbst zusammensetzen oder Prepared Statements mit Platzhaltern verwenden (die tauchen bei den Haskel Beispielen weiter unten auch auf), die API sorgt dann dafür, dass Metazeichen korrekt maskiert werden.

Wie XXD schon erwähnt hat sorgt wohl eher das Webframework dafür, dass die SQL Statements sicher sind, mit purem Haskel kann man sich schon eine Lücke einbauen wenn man will.

Gruß
Heavy