Welche Web-Programmiersprache ist die sicherste?
Die Frage ist in der Tat umstritten und führt immer wieder zu hitzigen Auseinandersetzungen aus allen Lagern. Es gibt viele Möglichkeiten, in dieser Hinsicht den Kuchen zu schneiden - WhiteHat Security hat dies in einer kürzlich erschienenen Ausgabe seines Website Security Statistics Report versucht, in der Statistiken zu Web-Programmiersprachen und deren komparativen Stärken in Bezug auf die Sicherheit analysiert wurden.
Das Sicherheitsunternehmen führte Schwachstellenbewertungen von 30.000 von ihm verwalteten Websites durch, mit dem Ziel, die Sicherheitsleistung der zugrunde liegenden Programmiersprachen und Frameworks zu messen. Im Folgenden sind einige wichtige Highlights der Ergebnisse aufgeführt.
Zunächst ein Haftungsausschluss: Wie bei jeder unabhängigen Studie muss man den Umfang der Forschung berücksichtigen, bevor man ein Urteil über die Sicherheit (oder deren Mangel) trifft. Im WhiteHat Security Report gehören die 30.000 Websites, die in der Studie verwendet wurden, WhiteHat-Kunden und scheinen das alte Pantheon der Web-Programmiersprachen zu repräsentieren: ASP/.NET, Perl, PHP, Java und ColdFusion.
Diese frühen bahnbrechenden Sprachen und Frameworks haben zweifellos maßgeblich dazu beigetragen, die Entwicklung von Webanwendungen zu dem zu machen, was sie heute ist. Allerdings sind neuere Sprachen und Frameworks wie Ruby/Ruby-on-Rails, Python (Django/Flask) und Go seitdem zu beliebten Optionen für die Webprogrammierung geworden.
Die folgende Infografik von Codeeval gibt eine aktuelle Darstellung des aktuellen Standes der Programmiersprachen im Jahr 2015. Für viele mag sich dies wie eine genauere Darstellung der Programmiersprachenlandschaft anfühlen.
Unterschiede in der Kategorisierung könnten für einige der Diskrepanzen zwischen der öffentlichen Wahrnehmung und der Studie von WhiteHat Security verantwortlich sein. Die obigen Angaben beziehen sich auf Programmiersprachen, während der Bericht von WhiteHat Security Web-Programmiersprachen abdeckt. Ob diese beiden austauschbar sind, würde den Rahmen dieser Diskussion sprengen, aber in der Studie von WhiteHat Security waren Favoriten wie Python, Ruby und Go auffällig abwesend.
Die am weitesten verbreiteten Sprachen
In der Studie von WhiteHat Security waren ASP, ColdFusion, .NET, Java, Perl, PHP und .NET die beliebtesten Sprachen (es wurde zwischen klassischem ASP und neueren .NET-Technologien unterschieden). Die drei beliebtesten Web-Programmiersprachen sind wie folgt:
- .NET (28,1 %)
- Java (24,9 %)
- ASP (15,9 %)
Der Prozentsatz der Schwachstellen, die jeder Sprache zugeschrieben werden, stimmt ebenfalls mit den oben genannten Rankings überein. Auf .NET entfielen 31 % der beobachteten Schwachstellen, während Java und ASP 28 % bzw. 15 % ausmachten.
Die Sprachübernahme variiert auch stark je nach Branche - zum Beispiel ist der Finanzsektor stark auf ASP angewiesen, während die Spielebranche von PHP dominiert wird. Das Bankwesen verlässt sich stark auf Java und .NET, während die Behörden bei der Erstellung von Webanwendungen ColdFusion und Perl zu meiden scheinen.
Sprachen mit den meisten Schwachstellen
Basierend auf den Ergebnissen des Berichts erhält .NET den Preis für die Sprache mit den meisten Schwachstellen, gefolgt von Java und ASP:
- NETTO (31 %)
- Java (28 %)
- ASP (15 %)
- PHP (2%)
WhiteHat Security verfolgt einen diplomatischen Ansatz, um diese Zahlen zu erklären, und stellt fest, dass viele Faktoren eine Rolle spielen können: das Übergewicht von Anwendungen, die in .NET und Java geschrieben wurden, die Komplexität/Größe von Websites und Anwendungen, die in diesen Sprachen geschrieben wurden, um nur einige zu nennen. Noch wichtiger ist, dass es keine Beweise dafür gibt, dass .NET oder Java weniger sicher sind als die anderen Sprachen.
Häufige Sicherheitsanfälligkeiten
In Bezug auf Schwachstellen war Cross-Site-Scripting (XSS) in ASP, ColdFusion, Java, Perl und PHP am häufigsten. Bei XSS-Angriffsmethoden werden clientseitige Skripte, die in der Regel in JavaScript geschrieben sind, in Webseiten eingefügt, die von Benutzern angezeigt werden, um die Zugriffskontrollen zu umgehen. Bei .NET-Anwendungen war das Durchsickern von Informationen - oder die versehentliche Offenlegung vertraulicher Daten (z. B. Kommentare, Debuginformationen, Fehlermeldungen) - die auffälligste Schwachstelle. ColdFusion erhielt mit 11 % den Preis für die meisten Sicherheitslücken durch SQL-Injection. In der Tat liefert eine oberflächliche Google-Suche nach "coldfusion sql injection" eine Fülle von Ergebnissen. Unter SQL-Injection versteht man das böswillige Einfügen von SQL-Anweisungen in eine datenbankgestützte Webanwendung, um den zugrunde liegenden Datenspeicher zu manipulieren und/oder zu verändern.
Wie Sie vielleicht schon vermutet haben, gibt es keine einfache Möglichkeit, die Frage zu beantworten, welche Sprache am sichersten ist. Eine unbeliebte Option kann als sicherer angesehen werden, da nicht viele in der Lage sind, sie zu verwenden (und zu missbrauchen). Auf der anderen Seite kann eine obskure Sprache es Entwicklern erschweren, gehärtete Anwendungen auf der Grundlage bewährter Methoden zu erstellen. Auf Organisations- und Teamebene bedeuten vorhandene Kenntnisse in einer Sprache in der Regel, dass sicherere Programmiermethoden verwendet werden. Im Fall von .NET und Java sind beispielsweise die Popularität und die weit verbreitete Akzeptanz ihre Achillesfersen.
Anstatt die Sicherheitsvorzüge und -mängel jeder Sprache zu loben oder zu verunglimpfen, bietet die Studie einige wertvolle Metriken in Bezug auf Schwachstellen pro Sprache und beschreibt, welche Arten von Angriffen in jeder Sprache am häufigsten auftreten. Dies hilft zwar nicht bei der Bestimmung, welche Sprache insgesamt sicherer ist, aber es kann den Unternehmen sicherlich eine umfassende Richtung geben, welche Sicherheitsmaßnahmen mit dem von ihnen gewählten Software-Stack ergriffen werden müssen. Und obwohl es keine schlüssigen Antworten darauf gibt, welche Sprache am sichersten ist, verdeutlichen die Ergebnisse dennoch die allgemeine Verwundbarkeit und schwache Sicherheitslage der meisten Webanwendungen. Wenn Entwickler verstehen, womit sie arbeiten, können sie Sicherheit direkt in ihre Entwicklungs-Frameworks integrieren und Softwaretests und Sicherheitsrisikobewertungen in alle Phasen der Entwicklung einbeziehen. Zu diesem Zweck bietet UpGuard eine umfassende Schwachstellenbewertung und -überwachung für Webanwendungen, Server, Router und mehr.