Web-Entwickler: Sicherheit fällt meist hinten runter

Viele sicherheitsrelevante Vorfälle, bei denen vielen Unternehmen in den letzten Monaten hohe Schäden entstanden und Nutzer ihre persönlichen Daten offen im Netz vorfanden, hätten womöglich verhindert werden können, wenn die Web-Entwickler nur etwas ... mehr... Sicherheit, Sicherheitslücken, schloss, Abus, Kette Bildquelle: John Dierckx / Flickr Sicherheit, Sicherheitslücken, schloss, Abus, Kette Sicherheit, Sicherheitslücken, schloss, Abus, Kette John Dierckx / Flickr

Diese Nachricht vollständig anzeigen.

Jetzt einen Kommentar schreiben
 
Wo soll eigentlich für so einen Entwickler die Motivation liegen für die Datensicherheit zu sorgen? Die Auftraggeber sind ja schließlich ausschließlich an den Daten interessiert (jeder einzelne Datensatz bringt weit mehr gutes Geld als die bestellten Produkte kosten). Der Nutzer interessiert da nur als Objekt, das man auspressen kann, wie eine Zitrone!
 
@Graue Maus: Naja. Der Imageschaden ist schon gravierend, wenn ein Datenleck bekannt wird. Der Schaden kann da sehr schnell die von dir gemutmaßten Prämien für Datensätze übersteigen.
 
@Graue Maus: Der Auftraggeber nutzt aber in der Regel keine Sicherheitslücken.
 
@Graue Maus: Du hast ein sehr verdrehtes Bild von Webentwicklerung und deren Auftraggebern
 
@Graue Maus: Was fällt in deinen Augen unter Webentwicklung?
 
@Knerd: Vorallem soziale Netzwerke, wie Facebook, VZ, und Isharegossip. Dazu kommen noch die Plattformen Zalando und Amazon. Das Einwohnermeldeamt, wo ich nur hingehen muß, und mittels eines Kreditvertrages nachweise, das ich dem/der Bürger/in XY Geld geliehen habe, und dann die Adressdaten bekomme zählt für mich nicht unmittelbar dazu, da die Weitergabe an der Rechtsauslegung des Gesetzgebers, und nicht an dem Fehlverhalten der dortigen Mitarbeiter/innen liegt!
 
@Graue Maus: Dann hast du ein beschräntes Blickfeld, nicht böse gemeint, auf Webentwicklung. Webentwicklung umfasst z.B. auch den SharePoint oder den Exchange Server von MS. Anderes Beispiel, Webservices, egal ob SOAP, Rest oder sonst was, sind alles Webanwendungen. Alles was als Anwendung über eine Netzwerkverbindung theoretisch abgefragt werden kann, egal von wo ist Webentwicklung.
 
@Graue Maus: Ich bin Webentwickler, der schon für einige größere Aufträge gearbeitet hat und auch andere Webentwickler auf Konferenzen kennenlernte. Die meiner Meinung nach häufigsten Ursachen für Sicherheitslücken sind entweder Unwissenheit oder Zeitdruck (=> immer vorhanden). Niemals aber, weil die Programmierer Sicherheit ablehnen und/oder zu faul sind. Als Webentwickler, ich schließe dabei mal von mir auf andere, möchte man natürlich eine möglichst gute Arbeit abliefern. Das bedeutet, man liefert dem Auftraggeber ein saubere programmiertes, stabiles, performantes und eben sicheres Produkt. Wenn man seine Sache gut macht, hebt man sich von anderen Programmierern ab und steigt auf in der Karriereleiter. Hinzu kommt, mal abgesehen von Rocket (= Zalando), dass oftmals Auftraggeber mit der Entwickleragentur über Jahre zusammenarbeiten, da ein Webprojekt niemals fertig ist. Würde man schlampen, auch in Hinsicht auf Sicherheit, gräbt man sich selber ein Loch. Ist das Produkt aber gut, und der Auftraggeber hat Erfolg damit, hat man sich als Entwickler ein weiteres Standbein geschaffen, das künftigen Auftragsmangel verhindern könnte. Oftmals sind aber Entwickler und Auftraggeber die gleiche Firma (vor allem bei Startups, aber auch Facebook und viele andere). Den "bösen" Datenhai, der uns Entwickler möglichst gering bezahlt, um maximalen Profit auszuschöpfen, gibt es also meist gar nicht. Letzter Punkt: Ein guter Entwickler ist ein Geek. Und Geeks nutzen mit Freude Facebook, Twitter, Xing und co. Das heißt, Programmierer haben meist kein so negatives Verhältnis zu Unternehmen, die mittels Userdaten ihr Geld verdienen.
 
Das Passwörter unverschlüsselt gespeichert werden liegt aber wohl weniger daran das die Entwickler mit dem Code nicht hinterher kommen sondern das ist mutwillige Dummheit und bestenfalls noch Faulheit ein Passwort-Recovery zu basteln. Und es ist auch kein Aufwand Variablen die per GET oder POST übermittelt werden auf ein gültigen Wert zu prüfen und den dann auch einfach mal sicher zu "quoten" ehe man ihn der Datenbank übergibt.
Nein solche Fehler entstehen nicht durch Zeitdruck sondern das liegt daran das viele Entwickler einfach keine Erfahrung haben - tja und die Zeit in der man sich solche Anfängerfehler leisten konnte, weil das Thema Sicherheit noch nicht so heikel war sind vorbei.
 
@Mudder: Es hängt auch damit zusammen, das per SQL Statement in die DBs geschrieben wird. Dafür gibt es Frameworks wie ADO.net oder Hibernate. Die verhindern schon einmal SQL Injection. Und einen Wert zu prüfen ist vieeeeel zu aufwändig :P
 
@Knerd: Das ist es aber genau. Neue Programmierer lernen auf der Uni nur noch mit Frameworks zu arbeiten und wenn noch ein wenig Java. Dann sollen sie mal was eigenes schreiben und haben absolut kein Plan wo sie anfangen sollen. @Kevni: Wenn man als Entwickler schlau ist dann hat man sich einmal ein paar Standard-Klassen und Funktionen geschrieben und schon hat man eine sichere Basis die man immer wieder verwenden kann und gleichzeitig weniger Zeitprobleme.
 
@Mudder: Und was ist daran schlecht? Ich hab mit C angefangen, bin zu C# gegangen und kann heute C, C++, C# und Java. Aber nur in den letzten beiden bekomme ich eine Datenbankverbindung hin. Diese Probleme wie SQL Injection entstehen erst dadurch, dass ich etwas selbst machen will.
 
@Knerd: Das Thema handelt von Web-Entwicklern. Sprich vor allem Webseiten und Webservices. Dein Fachbereich wird doch sicher etwas mehr in den Bereich Anwendungsentwicklung gehen, oder? Und bezüglich deines letzten Satzes: Sicherheit sollen sich die anderen drum kümmern. Warum was selber machen wenn ichs eh nur falsch mache. Genau mit dieser Einstellung wirst du bei vielen Firmen gegen ne Wand laufen wenn die von dir was individuelles programmiert haben wollen und da sind wir dann bei meinem vorherigen Argument: Nehm dem Kind die Schaufel weg und es ist zu blöde mit den Händen ne Sandburg zu bauen. @Elite.. (warum kein aussprechbarer Name?) Ja stimmt aber auch nur weil viele nicht wissen worauf sie achten müssen. Und wenn mans richtig macht dann sind diese Standardklassen eigentlich super einfach zu sichern. Erstell dir ne DB.Class mit einer Funktion die den Grundwert einer übergebenen Variable prüft (Typ und Strlen von bis, auch wunderbar verwendbar um Formularwerte zu prüfen) und eine Funktion mit Quote und ggfl. sogar Blackwordfilter und schon sind Injections kaum mehr möglich.
 
@Mudder: In Java und C# kann man auch Webservices und Webanwendungen schreiben. Ist privat und beruflich meine Haupttätigkeit. Nenn mir einen guten Grund, wieso ich ein gutes, erprobtes Framework nicht nutzen und stattdessen eine eigene Lösung nehmen sollte?
 
@Knerd: Sagt ja keiner das du das nicht machen darfst - und wie du sagtest sind diese Frameworks in der Regel weitgehend geprüft. Aber die Fehler werden entstehen sobald du vom Chef/Auftraggeber gesagt bekommst: Ich will was individuelles. Besonders Neulinge machen genau an dem Punkt die im Artikel genannten Fehler. Sie kennen oft nur Frameworks und wissen nicht wo sie bei einem Blanko-Projekt anfangen sollen und auf was man achten muss. Bevor es Standard war Frameworks und Co zu verwenden musste jeder zwangsweise selber kontrollieren wie er Formularwerte prüft, Sessions sichert und die Datenbank anbindet.
 
@Mudder: Formularwerte müssen auch noch händisch geprüft werden. Ich sags mal so, ich kann dir eine DB Anbindung in C# auch komplett mit SQL Statements schreiben, dauert aber ca. 5mal solange wie mit ADO.net. Was verstehst du unter was individuelles?
 
@Knerd: Naja normale Formularwerte müssen in der Regel ja schon geprüft werden um leere Formularwerte zu erkennen und ne Fehlermeldung auszuwerfen. Aber ich hab auch genug Seiten erlebt wo GET-Variablen direkt in die Datenbank gingen - Und ja ich gebe zu der DROP Befehl beim Konkurrenten sorgte aus unerfindlichen Gründen zu einem "Tut uns leid wir haben eine Panne". Mit individuell verstehe ich jetzt z.B. mal Internetseiten die sich nicht mit einem einfachen CMS bewältigen lassen weil im Hintergrund nen Buchhaltungssystem, ein Kundenportal und keine Ahnung noch was rein soll.
 
@Mudder: Das lässt sich aber was die DB betrifft alles mit ADO.net abbilden, um mal bei C# zu bleiben. Validierung ist eine andere Kiste. Dass Werte geprüft werden müssen hab ich ja schon geschrieben ^^
 
@Mudder: Knerd hat Recht, die meisten Entwickler sind einfach nur schlecht oder verstehen ihr Werk nicht. Überbezahlte Pseudoexperten. Es kann nicht sein, dass man komplexe Webseiten erstellen kann, aber die Sicherheit weglässt. Die programmiert man von Anfang an rein. Ich schreibe garantiert keine SQL-Statements, um dann nach 10 Monaten diese mit der Funktion mysql_real_escape_string() zu füllen (als Beispiel).. Sowas codet man direkt rein und das ist auch kein Mehraufwand. Genauso wie bei xss und Sonstigem. Wird es etwas komplexer macht man sich halt die 5 min Gedanken, obs wirklich so sicher ist und fängt dann erst an. Wo ist das Problem? Auf die paar Minuten kommts ja nicht drauf an^^
Wie gesagt, es hackt an was Anderem ;)
 
@Ninos: Also ich persönlich mal sollte von Anfang an schauen wie weit Programme Skalieren sollen und erweiterbar sein sollen, sonst bezahlt man am Ende die Rechnung wenn man alles um schreiben darf.
 
@Knerd: Du scheinst mir ein findiger Webentwickler zu sein. Aber wenn du mal Probleme mit Javascript in Browsern haben solltest, solltest du dir mal http://vanilla-js.com/ ansehen. Das beste Framework was ich bisher genutzt habe. Bin davon sehr begeistert und ist viel schneller als JQuery und Co. Jetzt habe ich schon zuviel Werbung gemacht, sorry :). C# habe ich noch nie für die Webentwicklung verwendet, außer für SOAP und REST-Services.
 
@kpy: Ich nutze C# für einen WCF REST Service ^^ Ich hab mich an jQuery gewöhnt, ist eigentlich nur Gewöhnungsgrund ;) Wie sieht's bei dir mit "normalem" JavaScript aus? Könnte da wirklich Hilfe gebrauchen, ist nicht meine Sprache ^^
 
@Knerd: Wenn du von JavaScript wegkommen willst und eine viel einfacheres Framework ohne Performance Verlust wie z.B. bei JQuery zu haben, ist VanillaJS eigentlich genau das richtige für dich. Probiers doch mal aus und ansonsten kannst du mich natürlich gerne dazu fragen. Im Gegenzug muss du es halt ertragen, dass ich dich ein paar Sachen zu .Net frage :)
 
@kpy: Immer gerne, schick mir mal ne Mail :) VanillaJS sieht ja aus wie Objective-C :D Das ist ja gruselig ^^
 
@Knerd: Es hat nur wenig mit Object-C gemeinsam, aber auf den ersten Blick macht es schon den Eindruck. Aber der erste Eindruck täuscht oft ;)
 
@kpy: Das Problem ist, ich brauche zwangsweise einen JSON Response...
 
@Knerd: Für VanillaJS brauchst du zum Glück kein JSON Response zwangsweise, das ist das schöne daran, leicht und einfach und schneller als andere Frameworks. Ein JSON Response kannst du ganz leicht mit wenigen Zeilen Code in VanillaJS erzeugen. Ich schick dir morgen noch meine Mailadresse :)
 
@kpy: Öhm... Mein WCF Service gibt JSON zurück ^^
 
@Knerd: kannst du kurz sagen, was du machst, dass du ein JSON zurück bekommst?
 
@kpy: Ich liste Objekte aus einer Datenbank und schreibe lasse die returnen. Wählen kann ich zwischen JSON und XML als returntype ;)
 
@Knerd: und weiter?
 
@kpy: Das wars ^^ Ich rufe einen Service auf, der mir als Response ein JSON gibt.
 
@Knerd: ok wenn du noch Fragen zu VanillaJS hast, nachdem du es mal ausführlicher getestet hast, gib einfach bescheid :)
 
@kpy: Ok, denn bis morgen ^^
 
mal sehen wie lang er brauch um es zu checken ^^
 
@Mudder: Genau die Art von selbstgeschriebenden Standardklassen neigt oft dazu Fehler zu Produzieren als zu vermeiden. Wieso wollen denn immer alle das Rad neu erfinden.
 
@Mudder: Also ich mache eine Ausbildung zum ITA und wir lernen in einem! Jahr C++ Basics (Funktionen, Type, Zeiger, Schleifen etc) und das noch nicht mal so das die Leute die vorher keine Ahnung hatten es in jedem Zusammenhang verstehen, im 2, Jahr kommt dann vielleicht Java und wenn wir Glück haben noch etwas C++ bis das ganze sicch das im 3. Jahr fortsetzt.
 
@Mudder: Wenn der Auftraggeber nicht die nötige Zeit bereitstellt um diese Dinge zu implementieren ist nicht der Webentwickler "dumm" sondern der Auftraggeber.
 
@Kevni: Es gibt so ein paar grundlegende Dinge die man beherrschen muss. Z.B. prüfen von Datentypen und Eingaben. Der Aufwand sind vllt. 5 min.
 
@Knerd: Im Artikel geht es um Sicherheits-Tests nicht um die direkte Prüfung von Datentypen und Eingaben. Sicherlich wurden diese Prüfung implementiert, aber ob sie auch funktionieren kann nur ein Sicherheits-Test der in diesem Fall fehlt herausfinden.
 
@Kevni: "Eine sorgfältige Prüfung der Codes kommt dabei zu kurz. 71 Prozent der Befragten in den Unternehmen aus den USA und Europa gaben außerdem an, nicht über ausreichend Mittel zu verfügen, um in bessere Sicherheits-Technologien und -Prozesse zu investieren." Dazu gehört auch das implementieren von Wert Prüfungen ;)
 
@Knerd: Gut möglich, die Probleme sind aber zu speziell um sie hier zu diskutieren ;) In meinem Betrieb sorgen entsprechende Tests für Sicherheit. Es werden alle möglichen Eingaben getestet (und dazu zählt auch der Versuch einer SQL-Injection) und wenn ein Test fehlschlagen sollte weiß man direkt was etwas nicht richtig behandelt wurde. Solche Tests kosten viel Zeit und daher auch Geld. Deswegen vermute ich das Sicherheitsprobleme meistens daran liegen. Wie du gesagt hast sollte jeder Entwickler bereits automatisch diverse Typprüfungen machen wenn dies die verwendete Sprache benötigt.
 
@Kevni: Bei mir sorgt das BSI dafür ^^ Und ich stimme dir zu, das hier zu diskutieren sprengt den Rahmen ^^ Einer Emaildiskussion wäre ich allerdings nicht abgeneigt :)
 
"dass ihnen nicht einmal die benötigten Tools für die Durchführung ausreichender Sicherheits-Tests zur Verfügung stünden." Hat unsere Stolze Regierung hat doch diese Art von Tools verboten oder irre ich?
 
@BadMax: Nicht für den Eigengebrauch sofern wir dasselbe meinen ;)
 
@Kevni: dachte sogar, dass man externe Seiten etc. auf ihre Sicherheit überprüfen darf, sofern man den Betreiber dann über die Lücke informiert und man sie nicht ausnutzt?
 
@Ninos: Nein auf fremde Seiten ist das strafbar, es sei denn man vereinbart die Attacke VORHER mit dem Inhaber als auch mit dem Serverbetreiber.
 
@Kevni: sicher? Wie machts dann heise und co? Ich bin mir ziemlich sicher, dass eine Attacke erlaubt ist, sofern man die meldet und dem Betreiber kein Schaden zuführt..
Erst Recht, wenn man zufällig drauf stoßt
 
es müssen hohe strafen für datenverluste eingeführt werden. dann lohnt es sich für die firmen definnitiv da zu investieren. über facebook und co. weiss man das ein datensatz ca. 100€ kostet x anzahl der verlorenen daten + 500k€ = strafe..
 
@gast27: Dann wäre der Staat noch Ärmer.
 
@Thaodan: dann gehts ihm wie dem bürger
 
Die Motivation ist gegeben! Wenn die Kunden allerdings immer nur den geringst möglichen Kostenaufwand decken wollen, dann fallen einfach viele Dinge weg die oft auch die Sicherheit betreffen.

Ich hatte das in meiner Laufbahn schon einige Male, dass Sicherheitsrelevante Themen aus Kostengründen "nachgezogen" werden sollten. Und wer in diesem Bereich tätig ist, weiß wofür "nachgezogen" steht, nämlich das es um eine nachträgliche Umsetzung sehr kritisch steht.

Würden die Kunden nicht ständig mit Zeit und Geld knausern, würden ihre System nicht ständig überrannt werden. An den Entwicklern an sich, liegt das sicher im seltensten Fall.
 
@AuthanRam: "nachgezogen" heißt eigentlich "nie". Das war bisher immer so. Aber die Dinge, die man bewußt "auslässt", holen einen sowieso irgendwann wieder ein. Auch das war bisher immer so.
Kommentar abgeben Netiquette beachten!

Video-Empfehlungen

WinFuture Mobil

WinFuture.mbo QR-Code Auch Unterwegs bestens informiert!
Nachrichten und Kommentare auf
dem Smartphone lesen.

Folgt uns auf Twitter

WinFuture bei Twitter

Interessante Artikel & Testberichte

WinFuture wird gehostet von Artfiles