javascriptdays: vom 10 tage hack zur ersten universalsprache?

84
10-Tage-Hack oder U!"v#r$%&$pr%’(#? Mittwoch, 13. März 13 Hallo Zusammen!

Upload: johann-peter-hartmann

Post on 20-Jan-2015

1.498 views

Category:

Documents


1 download

DESCRIPTION

Es ist nicht dokumentiert, ob Programmiersprachen-Gurus wie Stroustrup oder Wirth tatsächlich zu manischen Anfällen neigen, wenn Sie die Sprachkonstrukte von JavaScript sehen. Das laute Lachen der Security-Gurus, das erst Stunden später in einem Kichern versickert, ist währenddessen häufiger zu hören. Trotzdem wird diese Sprache inzwischen in alles eingebaut was elektrisch ist, vom eingebetteten Arduino über den Fernseher bis zur hochskalierbaren Enterprise-Anwendung. Warum ist das passiert, und was haben wir noch zu erwarten?

TRANSCRIPT

Page 1: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

10-Tage-Hack oder

Universalsprache?

Mittwoch, 13. März 13

Hallo Zusammen!

Page 2: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Erster Talk nach der Mittagspause ...

Mittwoch, 13. März 13

Tja, da habe ich den ersten Talk nach der Mittagspause, das ist immer so mittelsuper.

Page 3: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Mittwoch, 13. März 13

Die Leute kommen erholt, entspannt wieder in den Talk . Mal ehrlich, wer wäre jetzt lieber im Biergarten? Ja, genau. Wollen wir los? Wir haben noch 30 Minuten. Wer ist alles aus Bayern? Ok, das heist Zeit für 2 Mass. Wer ist aus Norddeutschland? Es gibt auch Halblitergläser, und ja, das nennen die hier tatsächlich „kleines Bier“.

Page 4: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Keynote: weniger harter Content

Mittwoch, 13. März 13

Ok, das würde aber der Verlag nicht mögen. Aber das macht nichts, deshalb ist es ja eine keynote. Es erwartet also keiner, dass toller neuer Content kommt.

Page 5: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Keynote: mehr schlechte Musik

Mittwoch, 13. März 13

Man könnte zum Beispiel einfach mehr schlechte Musik in seinen Vortrag einbauen. Check.

Page 6: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

JavaScript

Der zurückgebliebene kleine Bruder von Java

Mittwoch, 13. März 13

Eigentlich sollte der Talk anders heissen ...

Page 7: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

#aufschrei

Mittwoch, 13. März 13

nach der Aufschrei-Debatte, und insbesondere nach dem PHPness-Skandal des Verlages hier habe ich davon abstand genommen, und mich um political correctness bemüht. Also, zweiter versuch ...

Page 8: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

JavaScript

Die zurückgebliebene

kleine Schwester von Java

Mittwoch, 13. März 13

Daraufhin korrekt die feminine Form gewählt ...

Page 9: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

auch nicht besser...

Mittwoch, 13. März 13

... aber so richtig viel besser war das nicht.

Page 10: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

JavaScriptWarum der doofe kleine Bruder von Java

am Ende doch siegte

Mittwoch, 13. März 13

Also, eigentlich erzähle ich hier auch, warum der kleine Bruder von Java am Ende doch siegte. Damit die Dramaturgie stimmt werden ich ihn also vorher massiv schlecht machen.

Page 11: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Was gibt dem dennüberhaupt das Recht

das zu beurteilen?

Mittwoch, 13. März 13

Da stellt sich natürlich die frage, ob ich das überhaupt darf? Ist der mann da vorne überhaupt qualifiziert? Was bildet der sich ein?

Page 12: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Johann-Peter Hartmann

Gründer & CTO

Mittwoch, 13. März 13

Ich bin CTO bei Mayflower, aber eigentlich der klassische Hacker-Become-Manager-der-aber-eigentlich-lieber-wieder-Hacker-wäre. Kennt ihr bestimmt welche von. Ich bin da auch derjenige, der vor ein paar Jahren das Javascript mit in den Claim wollte.

Page 13: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Mittwoch, 13. März 13

Wirklich Ahnung habe ich nur von PHP. Da war ich schon vor 13 Jahren als Speaker unterwegs. Wer hat ebenfalls einen Migrationshintergrund in dieser Beziehung?

Page 14: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Was gibt dem dennüberhaupt das Recht

das zu beurteilen?

Mittwoch, 13. März 13

Faktisch kann man die Frage nach dem Recht also klar beantworten. Nein, dem gibt eigentlich keiner das Recht.

Page 15: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Was gibt dem dennüberhaupt das Recht

das zu beurteilen?

eher wenig.Mittwoch, 13. März 13

Faktisch kann man die Frage nach dem Recht also klar beantworten. Nein, dem gibt eigentlich keiner das Recht.

Page 16: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

JavaScript20032005

Rich Internet Applications. IE only.

Web 2.0 SecurityBrowserSecurity

Mittwoch, 13. März 13

So ein bischen JavaScript habe ich allerdings gemacht - zB 2002 einen javaScript WYSIWYG-Editor (ie only) geschrieben, und 2004 auch Rich Internet Applications, damals für die HypoVereinsbank. Richtig auf den Radar kam JavaScript dann im Rahmen von Web 2.0 Security und SektionEins. Da kannte ich mich wieder gut aus, werdet Ihr später merken. Ich bin also alt, aber nicht nur ich, sondern auch JavaScript. Wie am ersten Beispiel gut zu erkennen.

Page 17: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Mittwoch, 13. März 13

JavaScript hat einen langen Weg hinter sich, und auf der Strecke hat sich viel getan.Ich weiss nicht wie es Euch geht, aber ich kann mich nicht an das Jahr erinnern, wenn ich nur die Jahreszahl höre. Aber spiel mir ein Lied aus dem Jahr vor, und ich weiß wieder, was zu dem Zeitpunkt los war. Also gibt es die Geschichte von JavaScript eingeordnet in schlechte Musik.

Page 18: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

1995Hey, Brendan! Willst Du für uns

Scheme für Browser entwickeln?

Mittwoch, 13. März 13

Das war 1995. Da spielte Techno, in diesem Fall Kirmestechno, noch eine echte Rolle. Wer kennt den jungen Herrn unten rechts?

Page 19: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

1995Wouha,

cool, scheme!(define (sum-with x) (lambda (y) (+ y

x)))

Mittwoch, 13. März 13

Brendan Euch war hingegen eine coole Sau, und hat deshalb funktional entwickelt - in Scheme, das ist ein Lisp-Dialekt.

Page 20: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

1995

Mittwoch, 13. März 13

Und genau das war auch der Grund, warum sich beide handelseinig wurden ...

Page 21: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

1995Uhm, Brendan...

Scheme ... also ... wir haben wen neues kennengelernt ...

Mittwoch, 13. März 13

In der Zwischenzeit hatte allerdings Netscape jemand anders kennengelernt ..

Page 22: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

1995.. wäre Java-Syntax möglich?

Mittwoch, 13. März 13

Und er musste den Syntax einmal komplett durch die Mangel nehmen.

Page 23: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

1995Hrmpf.

com.sun.awt.getFactoryFactoryFactory()

Mittwoch, 13. März 13

So richtig super fand er das nicht, und er hat viele der grundlegenden Konzepte - etwa die einfache Objektorientierung, die von Self geerbt wurde - beibehalten. Nur eben weniger klammern. Dafür bleibt Prototypenbasierte Vererbung.

Page 24: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

10 DAYS

1995

Mittwoch, 13. März 13

Apropos Prototypenbasierte Vererbung. Er bekam genau 10 Tage Zeit, die Welt - in diesem Fall unsere - als Prototyp zu bauen.

Page 25: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

•Year 2000 Bugs

•string = primitive

•String = object

1995

Mittwoch, 13. März 13

Aber die neue Bekanntschaft von Netscape - auf den Namen Sun hörend - setzte sich durch, und sowohl Javaesquer Syntax als auch Name setzte sich durch. Und ein paar lustige Java-Eigenheiten, wie parallele Primitive und Objekt-Typen für die gleiche Aufgabe wurden übernommen, mit impliziter Konvertierung immerhin - wie auch der Jahr-2000-Bug. Siehe das Logo oben, man wollte es tatsächlich als Java-Ableger vermarkten.

Page 26: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

[TM]

1995

Mittwoch, 13. März 13

Ein weiterer Effekt: Bis heute gehört die Trademark JavaScript Oracle.

Page 27: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Protot2 === Produkt

1995

Mittwoch, 13. März 13

Aber wir hätten es ihm sagen können - wenn die Demo funktioniert ist sie das Produkt.Da stand er jetzt. Eigentlich wollte er Scheme machen, und eigentlich war es nur ein Prototyp

Page 28: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

1995

Mittwoch, 13. März 13

Durch das Timing konnte Sun unmittelbar in den zweiten Release von Netscape springen. Die erste Beta vom Netscape Navigator hatte die Sprache noch als Livescript drin. Erst mit Beta 4 hiess es JavaScript, und dort war auch Java mit dabei. Ich habe das damals miterlebt, war aber eigentlich wegen einer ganz anderen Neuerung nervös - es wurden auch Frames eingeführt, das klang damals tatsächlich wie ein brillianter Plan.

Page 29: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Java JavaScriptKomponentenAnwendungenProfessionelle

So3ware

ScripteHacksHobbyanwender-So3ware

Mittwoch, 13. März 13

Sun und Netscape hatten aber durchaus einen Plan, als sie beide Sprachen gleichzeitig einführten. Java sollte das Profi-Tool werden, mit dem Schwerpunkt auf Applikationen und Komponenten, und Javascript das kleine Hackertool für den Feierabendentwickler.

Page 30: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Einfach

Mächtig

Fl4ibel

SchnellMittwoch, 13. März 13

Und genau daher kamen auch die Anforderungen, die Marc Andresen und co an Brendan stellten. Mach es nicht zu kompliziert. Weil klassische - also klassenbasierte - OO so kompliziert ist wurde zB auf das Modell von Self gegangen.

Page 31: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

1996

Mittwoch, 13. März 13

1996 brachte einen neuen Spieler mit an bord, an dem das Internet vorher - zugunsten von MSN, AOL und Compuserv - vorbeigezogen war. Der hatte schon vorher einen Browser, aber der konnte noch kein JavaScript. Der neue auch nicht, weil der Name wie gesagt Sun gehörte - er konnte deshalb JScript.

Page 32: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Kompatibel in den komischen Dingen, inkl. Bugs...

... aber nicht die gleichen Features

Mittwoch, 13. März 13

Da wurde der Grundstein für die IE6-Hölle gelegt, das konzept war schon damals klar - eigentlich schon kompatibel, aber nicht soweit, dass es nützlich wäre.

Page 33: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

1996ANSI

ISOIETF

ECMA

JavaScriptJScriptEcmaScript

Mittwoch, 13. März 13

In der zwischenzeit hatte man spitzbekommen, dass die Sache mit dem Web eine grössere ist - und deshalb mit der w3c spontan eine eigene Standardisierungsorganisation gegründet. zu diesem Zeitpunkt wollte die sich aber nur drum kümmern, dass der Standard etabliert wird, nicht vom wem.

Page 34: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Browser War

Mittwoch, 13. März 13

Nachdem man sich so schön auf einen Standard geeinigt hatte, konnte man sich ja wieder streiten - der Browserwar begann. IE jagte mit allen möglichen Tricks, die noch Jahrzehnte später Gerichte beschäftigen, Netscape den Markt ab. Und am Ende war IE der neue Standard.

Page 35: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

1999

Mittwoch, 13. März 13

Und Microsoft war wieder in der gewohnten Umgebung. Wenn man der Standard ist, kann man auch welche setzen. Und genau das passierte. Outlook-Developer wollen im IE 5.0 einen Background-Request im Hintergrund machen können, weil sie es für Outlook Web Access brauchten.

Page 36: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

1999

XMLHttpRequestMittwoch, 13. März 13

Also erschufen sie ein Wunderwerk aus der Höllentechnologie ActiveX und einem Interface der MSXML2, mit dem man im Hintergrund XML-Requests machen konnte. Und weil es eine typische Windows-API war, hatte die open-Methode auch gleich 4 unterschiedliche Signaturen.

Page 37: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

2000

XMLHttpRequestMittwoch, 13. März 13

Aber trotzdem - es war eine gute idee, eigentlich. Deshalb legte Mozilla im Jahr drauf nach und implementierte auch eine eigene Variante - analog, aber als JavaScript-Objekt, nicht als ActiveX, denn das gab es in diesem Browser ja glücklicherweise nicht.

Page 38: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Mittwoch, 13. März 13

Leider war es nicht ganz perfekt, deshalb musste man noch ein bischen repariere ...

Page 39: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

2002

XMLHttpRequestMittwoch, 13. März 13

Und schon 2 Jahre später funktionierte es dann wirklich.

Page 40: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

2004

XMLHttpRequestMittwoch, 13. März 13

Und noch mal 2 Jahre später kam denn auch Safari dazu.

Page 41: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

2004

Mittwoch, 13. März 13

Dass passte ganz gut, denn in diesem Jahr redete Tim O‘Reilly über das Web 2.0 - eigentlich als Beschreibung für dynamische Internetapplikationen. Mit begriffen wie RIA und SPA spielte aber javascript schnell eine grosse rolle

Page 42: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

2005

Mittwoch, 13. März 13

Noch mehr Rückenwind gab es ein Jahr später: Jesse James Garret denkt sich AJAX als Bezeichnung aus - für etwas, was schon 6 Jahre vorher möglich war. Deshalb haben wir Developer auch alle gesagt „Das machen wir doch ohnehin schon“ Wer hat das auch gesagt?

Page 43: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

2006

Age of LibrariesMittwoch, 13. März 13

Trotzdem war das wegen der unterschiedlichen xmlhttprequest-Interfaces noch eine PITA. also wurden libraries dafür erfunden. Framework-basierte Entwicklung (extjs, jquery, ... ) wird mainstream

Page 44: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

2009

Mittwoch, 13. März 13

2009 wird node.s veröffentlich, und auf einmal ist Javascript nicht nur sinnvoll serverfähig - das war schon zu netscapes livescript-zeiten so - sondern beantwortet mit events auch ein akutes problem: wie werde ich responsiv?

Page 45: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

2011

Age of FrameworksMittwoch, 13. März 13

2011 begann dann das Age of Frameworks. Natürlich gab es die auch schon vorher, aber jetzt sollte die ganze Applikation aus Javascript kommen, und nicht nur ein Teil.

Page 46: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Mittwoch, 13. März 13

Und wo sind wir heute? Da fragen wir doch mal die Jungs von Redmonk, die Statistik auf Basis von echten Diskussionen und echte Commits - konkret Stackoverflow und Github machen. Die Statistik ist vom Januar. In welcher Ecke vermutet Ihr Javacript?

Page 47: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Mittwoch, 13. März 13

Genau, offensichtliche Frae - ganz rechts oben, weniger Fragen als Java auf Stackoverflow, dafür mehr Lösungen auf Github. Das ist ja mal ein gutes Verhältnis

Page 48: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

World Domination!Mittwoch, 13. März 13

Also ist Javascript ganz oben angekommen, de World Domination ist endlich erreicht!

Page 49: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Enterprise JavaScriptMittwoch, 13. März 13

JavaScript ist endlich im Enterprise angekommen! Dann kann ja nichts mehr schiefgehen. Also fast nichts. Fragen wir doch mal die Jungs aus der Enterprise direkt.

Page 50: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Mittwoch, 13. März 13

Wer kennt das schon in JavaScript?

Page 51: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Mittwoch, 13. März 13

Warum ist das so? weil alle Zahlen float sind, und float tickt eben so, wie auch in jeder anderen sprache. Es gibt eben kein Integer. Was es aber gibt sind Bitoperatoren. Das heisst intern gibt es wieder, für einen kurzen Moment, integers - es wird nur jeweils gewechselt. Und auch schleifenvariablen, Iteratoren etc sind immer Floats als werte.

Page 52: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Mittwoch, 13. März 13

Also Leerstring ist nicht 0 als String, aber 0 als Zahl identisch mit beidem?

Page 53: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Mittwoch, 13. März 13

Inkonsistentes Typecasting

Page 54: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Mittwoch, 13. März 13

Und die Reise geht weiter ... null ist ein objekt, aber gleichzeitig äquivalent undefined. Mit NaN gibt es sogar eine Entität, die niemals identisch zu sich selbst ist ...

Page 55: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Enterprise JavaScript??Mittwoch, 13. März 13

Man merkt der Sprache also an, dass sie in 10 Tagen geschaffen wurde. Es gibt noch viele andere beispiele - zum Beispiel die Verwendung von with oder eben dem == vergleich. Wurde das eigentlich hier auf der Konferenz schon erzählt? Wenn noch nicht: das kommt bestimmt noch :-)

Page 56: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

DOMMittwoch, 13. März 13

Ausserdem hat JavaScript Browser die schlechteste API der Welt. Ebenfalls als spontaner Hack im Rahmen von Netscape 2 entstanden, dann zu intermediate DOM aufgebohrt, dann von Microsoft erweitert, dann vom w3c standardisiert.

Page 57: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Jeder Browser supported unterschiedlich viel

Auch gerne mal buggy ... ... oder abwärtskompatibel buggy.

Standardisierung kam erst spät

So umfangreich, dass Security kaputt gegangen ist.

Mittwoch, 13. März 13

Das hat zur Folge, dass DOM nicht nur mit jede Browsertypen, sondern auch nach Version unterschiedlich supported wird. Gerne mit Fehlern, die dann aber für Kompabilität dringelassen werden. Die Standardisierung auf einen gemeinsamen Level gab es erst mit der dritten version. Die APIs sind inzwische so komplex, dass jede Änderung an DOM praktisch neue Security-Probleme impliziert.

Page 58: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Security?!Mittwoch, 13. März 13

Security: Fuzzer (Das sind scanner, die nach crashes suchen) finden mit jedem Algorithmus neue Bugs in allen Browsern. Security und JavaScript ist eh ein eigenes Thema.

Page 59: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

von Neumann-Architektur

Speicher == Code

== DatenMittwoch, 13. März 13

1945 hat John von Neumann die von Neumann-Architektur entwickelt. Das heisst im wesentlichen, dass es eine CPU gibt, einen Datenbuss und einen Speicher - und in diesem Speicher liegen Daten und der ausführbare code.

Page 60: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Ursache für ...

•Buffer Overflows•Integer Overflows•Format String Bugs•Use a3er Free80%

Mittwoch, 13. März 13

Dieses Konstrukt sorgt bei Programmiersprachen, bei denen man selbst den Speicher managen muss für einen grossen Teil der Bugs - 80% der Security-Bugs von 1990 bis 2000 gehen auf diese Konstruktion - Bugs wie oben, bei denen Daten zu Code werden, weil es für die CPU das gleiche ist.

Page 61: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

JavaScriptGrößte Attack Surface ever:

•2.5 Milliarden Clients•1 Milliarde Smartphones•Private Daten im Browser•Bankdaten im Browser•Milliardenunternehmen

Mittwoch, 13. März 13

Mit JavaScript haben die die Programmiersprache mit der größten Angriffsfläche der Welt. Es gibt Milliarden von Clients, und inzwischen gehen alle wichtigen persönlichen Daten über ihn. Und nicht nur die persönlichen - auch viele Firmendaten sind inzwischen zum Teil ausschliesslich im Web zu finden. Wer nutzt Google Calendar?

Page 62: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Dokument == Code

== DatenMittwoch, 13. März 13

Jetzt hätte man erwartet, dass man aus dem C-Problem gelernt hat, und Daten und Code nicht vermischt. Aber nein - es wird noch schlimmer. Darstellung ist Code und Daten zugleich. Es wurde einfach in die Dokumentenbeschreibungssprache hineingefriemelt.

Page 63: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Ursache für ...

•Session Riding•XSS•CSRF•JavaScript Hijacking•Clickjacking80%

Mittwoch, 13. März 13

Und da sind wir bei der Ursache für die meisten Bugs der letzten 10 Jahre. Nur wegen dieses Umstandes gibt es nämlich Attacken wie Session Riding, XSS, CSRF, JavaScript Hijacking, Clickjacking etc.

Page 64: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

JavaScript„Hey, ich 4ecute das überall für Dich!“

•in einem eigenen Tag <script>!•mit 4ternem Source-8les!•in Urls mit javascript!•In Stylesheets mit 4pression()!•in Attributen als Event!

•Mittwoch, 13. März 13

Die Vermischung ist ja schon schlimm genug, aber JavaScript geht noch einen Schritt weiter. Es will nämlich code überall im Dokument ausführen können.

Page 65: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

JavaScript„Es macht auch nichts wenn Du Dich vertippst, ich 4ecute das tro9dem!“

<IMG SRC="jav&#x09;ascript:alert('XSS');">

<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>

<<SCRIPT>alert("XSS");//<</SCRIPT>

<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>

Mittwoch, 13. März 13

Und es ist noch entgegenkommend - wenn man es mal anders schreibt, hey, kein Problem, es wird trotzdem ausgeführt. Beispiele ... Warum ist das so? Bei Dokumenten will man das. Auch wenn das Dokument nicht sauber oder syntaktisch korrekt ist, trotzdem will man etwas sinnvolles darstellen. Nur passiert das dann eben auch bei JavaScript.

Page 66: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

JavaScript„Fühl Dich einfach wie zuhause, richte es Dir ein wie es Dir passt.“

[Mittwoch, 13. März 13

Und damit man mit dem Code alles machen kann, gib JavaScript einem gleich die entsicherte Waffe in die Hand - man darf alles überschreiben, auch Systemfunktionen - im Beispiel alert - bishin zu [ - aka Array.prototype.constructor

Page 67: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

JavaScript„Wenn Dir was fehlt - ich hab da noch was“

•ActiveX•Flash•PDF•Java•+ JS in den Plugins sel:t

•Mittwoch, 13. März 13

Damit aber nicht genug - wenn einem dies nicht reicht, dann hat man gleich auch Zugriff auf den Rest der Browserwelt. ActiveX, Flash, PDF, Java können über JavaScript gesteuert werden, und die ersten drei implementieren sogar noch ein eigenes Javascript.

Page 68: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

JavaScript„Ah, die alten Bugs stehen da auch noch

rum, wenn Du die brauchst“

•Plugin-basierte Crashes•Dom-basierte Crashes•Use a3er free ;ploits•Heap Spraying •Heap Feng Shui

Mittwoch, 13. März 13

Und natürlich ist der Browser in C geschrieben, das heisst, die alten Turing-Bugs sind auch noch alle da. Und hier sind wir an genau der Stelle, warum die NSA und Konsorten heute 6stellige Zahlen für Browserbugs zahlen - an dieser Stelle habe ich das System unter kontrolle.

Page 69: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

JavaScript„Wenn Du Hilfe brauchst - Du findest mich

überall“

•Sk2e•Adium•Lokale HTML-8les•Beispiel: Desktop-8leklau •Beispiel: Sk2e-Wurm

Mittwoch, 13. März 13

Mit dem Browser hört die Reise aber noch nicht auf. Inzwischen findet sich JavaScript überall, zum Beispiel auch in Chats wie Skype oder Adium. Und das ist JavaScript-Code, der im Lokalen Scope läuft, und wie lokale Files ganz andere Rechte hat. Man kann damit direkt Files aus dem Desktop auslesen, auch die letzten Skype-Würmer und Bugs basierten auf HTML/JavaScript.

Page 70: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

JavaScript„Und ich fange gerade erst an ...“

•8le-API•Geolocation•Hybrid-Mobile•Camera•Contacts•...

Mittwoch, 13. März 13

Und was macht man mit so einer fahrlässigen Infrastruktur? Man entsichert die Waffe, und gibt ihr über verschiedene APIs zugriff auf Dateien, die Geo-Location - und inzwischen über Hybrid-Mobile Applications aus Phonegap etc auch Zugriff auf die Kamera und die Kontakte.

Page 71: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Will wirklich jemand eine Sprache,mit der man so leicht und so schnell

so viel falsch machen kann?Mittwoch, 13. März 13

Und da stellt sich die Frage, warum sollte jemand so eine sprache wollen. Eine Sprache, mit der man so schnell so dermassen viel kaputt machen kann.

Page 72: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Ja, genau das ist

der Punkt.Mittwoch, 13. März 13

Und genau darum geht es bei JavaScript. Die Nachteile bei Security sind die Vorteile von heute. Die Reichweite, die Flexibilität, die Mächtigkeit - deshalb ist es so erfolgreich.

Page 73: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

=me to Market

1994: 5 Jahre

2004: 3 MonateMittwoch, 13. März 13

Es hat sich in der Welt draussen nämlich etwas geändert - sie ist schneller geworden. Die Mittlere Time to Market ist um Faktor 12 schneller geworden, durch Ursachen wie : Globalisierung, Computer und Automatisierung. (Zahlen von Agile42, mir fehlen welche für Software, aber die sollten aktuell noch schärfer aussehen)

Page 74: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Continuous Deployment

Lean Startup

Scrum

10 Deploys a Day30 Features/Woche

Mittwoch, 13. März 13

Und diese Beschleunigung ist auch genau der grund, warum es in unserer Welt nicht mehr nur agile Methoden mit zweiwöchentlichen Releases gibt, sondern auch permanente Weiterentwicklung, Initiale Produkte aus Learn Startup die nach einem Wochenende gelaunched werden, Firmen die 30 Deploys an einem Tag oder 30 Features in der Woche in Produktion bringen.

Page 75: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

JavaScript wurde als Einsteigersprache für schnelle und einfache Lösungen geschaffen

Mittwoch, 13. März 13

Und genau für solche Anforderungen wurde JavaScript geschaffen. Zu dem Zeitpunkt zwar um Einsteiger zu adressieren, aber genau heute zahlen sich diese Entscheidungen aus.

Page 76: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Einfach

Mächtig

Fl4ibel

SchnellMittwoch, 13. März 13

Genau eine Sprache mit diesen Eigenschaften braucht es.

Page 77: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

•sehr mächtige Sprache (JSON)•einfache Objektorientierung•Script-Sprache!•compiliert sehr schnell

Features

Mittwoch, 13. März 13

Beispiele: Einfache Objektorientierung, sehr mächtige Sprache mit mächtigen Konstrukten - siehe JSON! - direkt ausführbare Scriptsprache mit extrem schnellen Compile

Page 78: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Deployment

•Browser-Umgebung •Distribution über Web und Appstore•minimale Release-Kosten

Mittwoch, 13. März 13

Aber nicht nur die Sprache selbst ist preiswert beim Fortschritt. Auch das Environment macht alles preiswert. Die Browser-Technologie ist überall vorhanden, die Distributionswege über Web oder Appstores sind schnell, einfach und preiswert.

Page 79: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

ReichweiteSmartphones

Browsers

Tablets TVsOS Embedded Devices

WebapplikationenMittwoch, 13. März 13

Wenn ich auf JavaScript setze limitiere ich mich nicht. Kein CEO der Welt braucht mehr eine strategische Entscheidung zum Einsatz von HTML und Javascript treffen, weil es schon überall läuft.Windows 8 setzt strategisch auf html5/js, HBBTV: faktisch HTML5-Apps, die in einem Opera ablaufen - auch SetTop-Boxen, Browser-only-OSs wie Firefox OS oder ChromeOS, Arduino itself (espresso)

Page 80: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Fun Fact:JavaScript ist da, wo Java hin wollte

1991 als Sprache für Consumer Electronicsentwickelt ...

TVsMobiltelefone

VideorekorderWaschmaschinen

Mittwoch, 13. März 13

JavaScript ist heute da, wo Java einmal hinwollte.

Page 81: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Thoughtworks Technology Radar 10/12

JavaScript is moving outside of the browser, emerging as an important technology for cross-platform development.

...

Along with the recent proliferation of other languages that compile to JavaScript, this makes us wonder if we should start to consider JavaScript as a platform and not just a language.

Mittwoch, 13. März 13

Und ich beende das ganze mit einem Zitat aus dem letzten Technology Radar von Thoughtworks. JavaScript ist die kommende Cross-Platform-Entwicklungswelt, und JavaScript wird selbst zu einer Platform. JavaScript ist mein neues Betriebssystem.

Page 82: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Danke!

Mittwoch, 13. März 13

Page 83: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Test Driven JavaScript wird Standard

Frameworks lösen jQuery abNode.js-Security wird ein >ema

Professionalisierung in CI + Deployment

Meine Kristallkugel

Mittwoch, 13. März 13

Page 84: JavaScriptDays: vom 10 Tage Hack zur ersten Universalsprache?

Coding Dojo

Hier18:00-19:00Martin Ruprecht (nicht ich!)Es wird also gut.

Mittwoch, 13. März 13