Webprogrammierung mit Datenbank
Hallo Community,
Fragen zur "richtigen Programmiersprache" gibt es schon einige, auch einige Antworten. Allerdings alles noch nicht so konkret, wie ich es (vor Augen) habe: für eine konkrete Anwendung (Progammierung eines Dienstplanungs-Tools für den Sozialbereich) im Web such ich geeignete Werkzeuge (bzw. möglichst nur EIN Werkzeug). Folgende Voraussetzungen/Randbedinungen: - Ich arbeite gern unter Mac und wünsche mir idealerweise eine komplett visuelle IDE (d.h. ich möcht die Webseiten / Formulare nicht in HTML etc. programmieren, sondern wysiwyg entwerfen und den Programmcode dazu schreiben (etwa wie ich es von VBA kenne). - Datenbankanbindung (auch relational) soll möglichst einfach gehen, entspr. Ausgaben möchte ich auch visuell auf die Website bringen (d.h. möglichst wenig coden müssen) - Ich hab auch schon versucht, mit Python zu arbeiten, das war mir aber zu viel "drumherum" (bis ich am Mac eine virtuelle Umgebung hab, in der ich dann mit Python loslegen kann, dann brauch ich noch PHP, HTML/CSS etc. etc. muss die Frameworks wie Django o.a. kennen lernen und und und - lieber wär mir, ich arbeite so wie im VBA mit EINEM Programm und am end hab ich einen fertigen Quellcode den ich auf den Server lade und das ding rennt. - Vielversprechend scheint mir Wakanda (siehe wakanda.org), das eine non-sql-db ist und browser- und serverseitig mit Javascript arbeitet. Ich muss dort (erstmal) nicht selber coden, kann es aber doch - wenn ich will. - Meine Hauptsorge wg. Wakanda ist aber dieses JS: ich möchte nicht Diskussionen über Sicherheitsaspekte haben (da die Lösung offenbar zu 100% mit JS funktioniert, dh ohne Alternative, d.h. wer als User meint, JS muss er deaktivieren, der kann die Lösung nicht verwenden. Könnte das ein Thema werden? Wie wird JS & Sicherheit derzeit bewertet? Gibt es nicht "gefährlichere" Techniken? Wär neugierig... Hat jemand eine Alternative für meine Zwecke? Über jeden Tipp dankbar! Thomas
2 Antworten
Eine halbwegs umfangreiche Web-Anwendung kann man leider nicht komplett aus dem Baukasten zaubern.
Wenn du bereits bist dich ein wenig einzuarbeiten und zu programmieren, solltest du es mit Ruby on Rails probieren. Ruby ist eine intuitive, leicht erlernbare Sprache, mit der man am Mac sehr bequem arbeiten kann und das Rails Framework erledigt sehr viel Arbeit im Hintergrund. Mit ein bisschen Einarbeitung kannst du in sehr kurzer Zeit, komplexe Web-Anwendungen mit Rails erstellen. Du musst dir aber im klaren sein, dass du z.T. auch mit dem Terminal arbeiten musst.
OK Danke! schaut interessant aus... wie ist Ruby im Vergleich zu Python??? Hab den Eindruck bekommen, dass für Web-Apps mit Ruby "ganz normale" Webhosting-Pakete, sofern sie fast-CGI können, genügen? Oder täuscht mit das? (wär ein Vorteil gegenüber meiner Wakanda-Idee, da bräuchte ich einen ded. Server wo ich das Wakanda-Framework installieren kann/darf...). Kann jemand einen gute IDE für Ruby auf dem Mac empfehlen? (möglichst "visuell", dh. so dass ich die Webseiten/Templates direkt grafisch generieren kann?)? Wie ist JetBrains RubyMine? (sehr!) neugierig! und weiterhin danke für jeden Tipp! Thomas
Wie wird JS & Sicherheit derzeit bewertet? Gibt es nicht "gefährlichere" Techniken?
Es ist eigentlich ganz einfach:
Es gibt den Client, es gibt den/die Server. Der/Die Server kontrollierst du und dafür bist du verantwortlich. Alles was jetzt in deinen Bereich reinkommt (Anfragen nach Dateien, AJAX-Requests, etc) ist potenziell gefährlich. Auch wenn du denkst "was anderes kann man ja im Formular nicht eingeben", man kann es (technisch gesehen) senden! Alles was du an Variablen verwendest die von Außerhalb deines Servers kommen solltest du per Whitelist am Server checken bevor du es verwendest. Wie eine Zollkontrolle am Rande deiner Ländereien. Und dann bist du praktisch vor fast allen Gefahren wie SQL-Injection oder XSS sicher. Spamschutz und DoS-Schutz fehlen aber noch
Das bedeutet aber auch: Sämtliche Sicherheitsmaßnahmen deinerseits die du in JavaScript implementierst sind eigentlich nutzlos, da JavaScript nicht in deiner, kontrollierten Umgebung ausgeführt wird sondern am Client beim User (und der kann nach Herzenslust modifizieren)
Danke... was serverseitig los ist, ist eine Sache, und ich glaube auch, dass man das einigermaßen - wenngleich wohl nie 100,0%ig - in den Griff bekommen kann (entspr. Kenntnisse vorausgesetzt). Mir gehts aber um die Frage: Kann ich einem Anwender (der kein Hacker ist ;-) versichern bzw. erklären, dass JavaScript für ihn nicht potentiell gefährlich ist, d.h. dass er es in seinem Browser getrost aufdrehen kann, weil die Technologie für ihn ungefährlich ist? Oder kann ich das eigentlich nicht, weil vielleicht ein anderer Benutzer einen schädlichen Code auf meinem Server einschleust, der den Computer des "harmlosen" Benutzers infizieren kann, nur weil dieser Javascript aufgedreht hat? Das ist die Diskussion, die ich nicht haben möchte... Wie weit ist Javascript auf Webseiten verbreitet? Und ist es immer so, dass die Webseiten auch ohne aktiviertes JS funktionieren, nur halt mit "extraklicks"?
Heutzutage ist es so, dass mehr und mehr Webseiten nicht mehr barrierefrei sind. Die Durchdringung von JavaScript ist so gewaltig, dass dem Nutzer praktisch keine Wahl mehr gelassen wird. Mach mal den Selbsttest: Schalte JS ab und begebe dich auf die wichtigsten Seiten (Facebook, Twitter, etc). Die funktionieren entweder gar nicht mehr oder sind völlig zerrissen. Im Firefox wurde kürzlich die Option JS abzuschalten aus den Einstellungen (GUI) entfernt. Abschalten geht zwar noch, man muss aber wissen wie. Es macht aber keinen Sinn mehr, weil man dann praktisch nicht mehr Surfen kann (wie schon erklärt). Mit anderen Worten: JavaScript haben fast nur noch die deaktiviert (seitenspezifisch per NoScript), die um die potenziellen Gefahr wissen, die von Cross-Site-Scripting ausgeht.
An deiner Stelle würde ich einen Hinweis setzen dass JavaScript benötigt wird damit die Seite ordnungsgemäß funktioniert mit einer kleinen Extra-Seite wo du beschreibst warum und wofür es benötigt wird, sowie ggf. was du tust um den Benutzer zu schützen. Also sowas wie
"Die Seite erfordert JavaScript um korrekt zu funktionieren. Erfahren Sie mehr..."
Und dann auf der Info-Seite
" Unsere Seite benötigt JavaScript um [...]
Die Ausführung von JavaScript auf unbekannten und nicht-vertrauenswürdigen Webseiten zu unterbinden fördert ihre PC-Sicherheit, jedoch ohne lassen sich o.g. Funktionen technisch nicht realisieren. Deshalb bitten wir sie JavaScript für unsere Seite einzuschalten, wenn Sie sie benutzen möchten. Da wir auch um Ihre Sicherheit besorgt sind, haben wir bereits notwendige Schritte eingeleitet um das Einschleusen von Schadcode zu unterbinden. Sämtliche Nutzer-Eingaben, die auf unseren Servern eingehen durchlaufen Sicherheitsfunktionen, die das Einbetten von Schadcode verhindern [...]"
Ungefähr so. Damit weiß der Nutzer, dass JS benötigt wird und warum. Dadurch dass du ihm erklärst wofür du JS brauchst und ihn auch offen über JavaScript aufklärst (was sie ggf. selbst schon wissen), merken sie dass du dir Gedanken über das Thema gemacht hast und sammelst Vertrauen beim User (welcher Admin nimmt sich schon die Zeit? Viele Webdesigner rotzen ihren JavaScript-Code auf die Seite und wenn du es aus hast ist das dein Problem)
Kleiner Überblick über die Syntax: learnxinyminutes.com/docs/ruby/
Sollte es dein Interesse geweckt haben, hier etwas zum durcharbeiten: ruby.learncodethehardway.org/book/