Tag-Archive for » Javascript «

POST-Anfragen können Internetserver lahmlegen

Auf dem Kongress des Chaos Computer Clubs wurde eine neue Schwachstelle von Internetservern offengelegt. Die Entwickler Alexander Klink und Julian Wälde haben das Problem entdeckt und beschrieben.

Über POST-Requests kann man gezielt Hash-Kollisionen auslösen, die die Last eines Internetservers drastisch erhöhen, und so eine DoS-Angriff fahren. Das klappt im Grunde bei allen Webservern, denn das Problem liegt in den verwendeten Scriptsprachen wie PHP, ASP oder Javascript.

Durch solche provozierten Hash-Kollisionen braucht man weniger als 100 kBit/s Bandbreite, um eine moderne CPU komplett auszulasten und einen Internetserver in die Knie zu zwingen. Als bestes Mittel dagegen gilt es, die Hash-Funktion zu randomisieren.

Einige Hersteller haben schon auf die Angriffsmöglichkeit reagiert. Microsoft bietet einen Patch für ASP.Net an, der heute erscheinen soll. Bei PHP empfiehlt sich die Absicherung mit Suhosin an. Für Tomcat gibt es ein Workaround und für Ruby einen Patch.

Coffeescript: Ein weiteres “besseres” Javascript

Javascript-Alternativen tauchen aktuell vermehrt auf. Mit Coffeescript steigt eine weitere Lösung in den Ring. Die Entwickler preisen Coffeescript als “einfacher” an:

“Unter all diesen unschönen Klammern und Semikolons hat Javascript im Herzen ein großartiges Objektmodell. Coffeescript ist ein Versuch, die guten Eigenschaften von Javascript auf einfache Art und Weise bereitzustellen”

Eigentlich ist Coffeescript ein Precompiler, der Javascript-Code erzeugt. Dieser Javascript-Code kann normal im Browser ausgeführt werden, ist leicht lesbar und hat die JS Lint-Tests bestanden.

Man kann Coffescript unter coffeescript.org downloaden. Eine Sprachreferenz führt Einsteiger in die Coffeescript-Syntax ein.

Neue JavaScript-Funktionen von Microsoft

Unter “Javascript-Prototypen für Globalisierung, Mathematik, Zeichenketten und Zahlen” veröffentlicht Microsoft als Teinehmer der EMCA-Arbeitsgruppe TC39 neue Erweiterungen von Javascript, zunächst noch experimenteller Art.

Das Problem kennen Webdesigner und –programmierer. Mit HTML5 werden die Funktionalitäten immer umfangreicher und die Webanwendungen anspruchsvoller. Umgebungen, in denen auch für triviale Aufgaben der Server erneut abgefragt werden muss, kommen kaum mehr in Frage.

Die neuen Funktionen sollen JavaScript tauglicher für zukünftige Anwendungen machen. Referenzimplementierungen kann man schon von Microsoft’s HTML5 Labs downloaden, dort gibt es auch Beispiele wie die Globalization Demo. Zum Testen muss man aber den Internet Explorer 9 verwenden, darauf wird auch beim Download hingewiesen, wenn man das mit einem älteren IE oder einem anderen Browser versucht.

Schnelleres Javascript mit der Beta von Firefox 9

Typinferenz nennt sich die Technik, mit der die Beta von Firefox 9 den Ablauf von Javascript-Programmen deutlich beschleunigen will. Dabei erzeugt die Jacascript-Engine Spidermonkey durch Analyse des Codes und Überwachung während der Ausführung vollautomatisch Typinformationen zu den Javascript-Programmen.

Bei der nachfolgenden Just-in-Time-Übersetzung werden diese Typinformationen benutzt, um hocheffizienten Code zu erstellen. Benchmarks zeigen dabei Verbesserungen der Ablaufgeschwindigkeit bis zu 30 % an.

Die Erkennung der “Do not track”-Funktion für die Privatsphäre der Benutzer, die nicht möchten, dass ihre Aktivitäten verfolgt werden, ist jetzt in FF 9 möglich.
Sämtliche Neuerungen in Firefox 9 sind in den Release Notes zu finden.

Webbasierter Cloud-Editor ACE 0.2.0 mit neuen Sprachen

ACE ist ein webbasierter Programmeditor mit einem Funktionsumfang, der einem normalen Editor schon ziemlich nahe kommt. Es ist ein Nachfolge-Projekt von Mozilla Bespin. Die neue Version 0.2.0 bringt eine vertikal oder horizontal geteilte Ansicht des Editors, Code-Folding und einen Syntax-Check während der Eingabe.

An Sprachen werden aktuell PHP, Java, Javascript, Ruby, C++, Python, HTML und CSS unterstützt. In Arbeit ist die Sprachunterstützung für Scala, C#, Perl, Groovy und JSON.

Der Cloud-Editor ACE ist komplett in JavaScript geschrieben. Weitere Informationen und einen Download-Link findet man auf der ACE-Homepage.

Google will Javascript durch Dart ersetzen

Die als “neue Programmiersprache für strukturierte Web-Programmierung” bezeichnete Sprache Dart soll auf der Goto-Konferenz im Oktober in Aarhuis von Google gepusht werden. Vorgestellt wird sie von Gilad Bracha, dem Erfinder von Newspeak, der auch mit an den Java-Specs gearbeitet hat und Lars Bak, seines Zeichens Chefentwickler der V8-Javascript-Engine.

Wie kommt man nun darauf, dass Dart Javascript ablösen soll und kann? Das Soll ist einfach zu erklären, eine entsprechende Mail von Google leakte durch. Das Kann muss sich erst noch erweisen.

Zunächst ist es nur ein Wunsch von Google. Der Konzern möchte Javascript komplett durch Dart ersetzen und hat sich schon Gedanken dazu gemacht. Für Browser, die Dart nicht unterstützen, soll zum Beispiel ein entsprechender Compiler Dart->Javascript zur Verfügung gestellt werden. Eventuelle Performance-Vorteile dürfte der dann aber wieder auffressen.

Aus dem ECMA-Komitee wird Google wohl keine Unterstützung bekommen, denn im Grunde genommen ist der Push für Dart kontraproduktiv in jeder Hinsicht.

Chrome Frame als stabile “non admin”-Version verfügbar

Chrome Frame ist eine Erweiterung besonders für ältere Microsoft-Browser, die moderne Technologien wie Javascript oder HTML5 in weniger fähige Browser integriert und dabei auch die Rendering-Unit des Google-Browsers mitbringt. Die stabile Version von Chrome Frame gibt es für die Internet Explorer-Versionen 6 bis 9.

Im Chrome-Blog wird beschrieben, wie man Chrome Frame in andere Browser integriert. Besonders nützlich ist Chrome Frame für Umgebungen, in denen keine anderen Browser als die älteren von Microsoft erlaubt sind. Das besondere an dem neuen Update ist, dass es auch installiert werden kann, wenn der Benutzer keine Admin-Rechte auf dem Computer hat.

Wer für Kunden mit einer solchen IT-Umgebung moderne Internetseiten entwickelt, hat erst mit Chrome Frame eine reelle Chance.

Formular mit Javascript abschicken

Manchmal steht man bei der Erstellung von Webseiten vor dem Problem, dass Daten via POST zu einer anderen Seite transferiert werden sollen, ohne dass der Benutzer das z.B. durch Mausklick auf einen Submit-Button initiiert.

Dazu gibt es eine einfache Lösung mit Javascript. Zunächst werden die per POST zu übertragenden Daten mit dem Attribut “hidden” in ein Formular eingetragen, das einen Namen haben muss, im Beispiel “f1″, damit man es per Javascript ansprechen kann. Alternativ ließe es sich auch als Index ansprechen.

<form action=”EmpfangendeSeite.php” method=”POST” name=”f1″ >
<input type=”hidden” name=”charset” value=”utf-8″>
<input type=”hidden” name=”next” value=”3″>
</form>

Direkt hinter dem Formular steht das nachfolgende Einzeiler-Programm, das den Transfer der Daten zur Zielseite auslöst.

<script>
document.f1.submit();
</script>

Der neue Firefox 6 steht bereit

Schon am Wochenende konnte man Firefox 6.0 von der Mozilla-FTP-Site downloaden. Die augenfälligste kleine Neuerung des neuen Browsers ist die Hervorhebung der Domain in der URL-Zeile durch Fettschrift.

Firefox bringt viel Neues wie die HTML5-Funktion Progress zur Erzeugung von Echtzeit-Fortschrittsanzeigen oder das Track-Element für ergänzende Textinfos zu Audio- oder Videoinhalten, die über eine Zeitsteuerung eingeblendet werden.

Für Entwickler von Internetseiten dürfte das integrierte Scratchpad das Highlight der Version sein. Damit lassen sich auf sehr einfache Art und Weise Javascript-Programme im Browser testen. Bei Antennasoft.net kann man sehen, wie das funktioniert und was man damit alles machen kann.

Datumsausgabe mit Javascript

Wer bei seinem Hoster PHP nicht nutzen kann oder wer sich mit PHP überhaupt nicht auskennt, muss trotzdem nicht auf aktuelle Datums- oder Zeitangaben verzichten. Es gibt ja noch Javascript.

<script type="text/javascript">
function DatZeit() {
var date=new(Date);
document.write(
date.getDate()+
'.'+
(date.getMonth()+1)+
'.'+
(date.getYear()+1900)+
'  -  '+
date.getHours()+
' Uhr, '+
date.getMinutes()+
' Minuten und '+
date.getSeconds()+
' Sekunden');
};
DatZeit()
</script>

Diese Javascript – Funktion gibt beim Aufruf das aktuelle Datum und die aktuelle Uhrzeit aus:

2.5.2011 – 8 Uhr, 19 Minuten und 45 Sekunden

Auch wenn PHP verfügbar ist, sind auch Umstände denkbar, unter denen die Datumsausgabe mit Javascript der mit PHP vorzuziehen ist.