Workers, genauer noch Web Workers heißen sie und sind eine neue Technologie in Sachen JavaScript. Eine Implementierung seitens IE ist noch nicht vorhanden, ist aber früher oder später zu erwarten. Der Firefox beherrscht sie ab Version 3.5, der Seamonkey ab Version 2. Doch was ist ein Worker und wie funktioniert er?
Der Worker an sich ist eine JavaScript-Klasse. Der Constructor lädt eine JavaScript-Datei im Hintergrund, wie folgt:
1 | var myWorker = new Worker('src/javascript-file.js'); |
Das tolle am Worker ist, dass er einfach im Hintergrund geladen werden kann und dort dann ausgeführt wird. Der Sinn eines Workers besteht also darin Hintergrundaktionen zu verarbeiten. Der effektive Sinn bzw. das Ziel von Workern ist aber eine bessere Strukturierung von Code. Während der Worker bspw. Berechnungen durchführt oder andere Algorithmen laufen lässt, bearbeiten die ganz normal implementierten JavaScript-Dateien bspw. den DOM oder Werten Rückgaben des Workers aus.
Wichtig zu wissen: Komplexe mathematische Berechnungen blockieren nicht mehr die Website wenn Sie als Worker ausgeführt werden.
Zum Verständnis des Prinzips habe ich ein kleines Schema erstellt:

Das heißt, das “Standard-JavaScript” und die Worker kommunizieren untereinander - und zwar mit einer ganz bestimmten Schnittstelle.
Mit onmessage definieren wir die Funktion die aufgerufen wird, wenn der Worker mit uns reden will, der Worker also etwas sendet.
1 2 3 4 | var myWorker = new Worker('src/javascript-file.js'); myWorker.onmessage = function(event){ alert('Worker meldet: '+event.data); } |
Doch wie reden wir mit dem Worker? Schließlich wollen wir ihm Aufgaben geben. Das geschieht noch einfacher als das Empfangen:
1 | myWorker.postMessage('Rede mit mir!'); |
Ok, nun kommunizieren wir mit dem Worker. Doch woher weiß der Worker selbst, dass wir mit ihm reden? Die onmessage-Funktion gibt es hierzu zweimal. Einmal im eigentlichen Script (siehe oben) um Daten zu empfangen. Desweiteren aber natürlich auch im Worker (javascript-file.js) selbst:
1 2 3 4 5 | onmessage = function(event){ if(event.data == 'Rede mit mir!'){ postMessage('Hier bin ich, der Worker persönlich!'); } } |
Natürlich kann der Worker auch Fehlerbehandlung. Ich persönlich wollte euch das Thema kurz und bündig näher bringen, für mehr Informationen dienen die Links unten. Der Worker ist an sich eine tolle neue Implementierung in JavaScript, funktioniert aber bisher nur in Firefox, Safari und ähnlichen neuen/modernen Browsern (Webkit, Gecko).
Für mehr Informationen über den Worker und seine Möglichkeiten einfach mal folgende Quellen anklicken:
https://developer.mozilla.org/En/Using_web_workers
http://ejohn.org/blog/web-workers/
http://www.phphatesme.com/blog/webentwicklung/arbeitstier-browser-web-workers/
Ich habe bereits einmal über die ISPEM-Methode zur Verschlüsselung von Passwörtern berichtet. Dank einem aufmerksamen Leser wurde ich auf ein kritisches Leck aufmerksam gemacht. Dies fiel mir nicht auf, da ich in der Zwischenzeit bereits eine verbesserte ISPEM-Verschlüsselung programmiert und in meine Projekte implementiert hatte.
Wer irgendwo ISPEM implementiert hat muss dringend das Update auf das neue ISPEM durchführen (siehe Code-Abschnitt unten)
Was ISPEM ist und wodurch es sich auszeichnet findet ihr im Beitrag ISPEM-Verschlüsselung.
Hier das sichere Script:
define('ISPEM_FCONST_SPL','your_unknown_value1',true); define('ISPEM_SCONST_SPL','your_unknown_value2',true); function ISPEM_encrypt($clear_password){ $cr = str_rot13($clear_password); $cr = base64_encode(ISPEM_FCONST_SPL.'!'.$cr); $cr = substr(md5('::/'.$clear_password.'/::'.ISPEM_SCONST_SPL),0,13).md5($cr.strlen($clear_password)); return $cr; #liefert 45-Charakter-String, sehr sicher }
Seit vielen Monaten schon arbeite ich an an einem neuen innovativen CM-System für kleine bis mittlere Websites. Zum Einsatz kommt dabei mein eigenes PHP-Framework Senso (daher auch nanum Sensory).
Das CMS wurde mittlerweile fertiggestellt und gilt nun als final in der Version 1.05.
Folgende Grundfunktionen sind im CMS verankert:
Weitere Funktionen / Eigenschaften des Systems sind:
Das CMS baut sehr stark auf Sicherheit auf. Neue Sicherheitssysteme verhindern Datenklau (Loginklau) oder Bruteforce-Logins. Nach 5 falschen Login-Versuchen gibt es eine Zeit-Sperre für den entsprechenden Nutzer. Das System ist sehr gut geeignet für private Seiten und mittlere Firmenwebsites.
Das nanum CMS wird wie auch schon das alte CM-System nur intern vertrieben. Bei Interesse reicht eine E-Mail an mich, dann können wir über Möglichkeiten der Nutzung reden. Ich würde mich freuen.
Viele von euch werden es schon wissen, die Nachricht kommt meinerseits so spät, weil ich nicht genau wusste, wie es zu berichten war, ich musste erst Herr über die Lage werden, bevor ich meine Meinung dazu äußere.
Der Programmierer des Crawlers, der Daten sammelte in SchülerVZ (siehe Nachrichten “Datenskandal bei Schülervz”) beging in der JVA Selbstmord. Vermutlich war er etwas labil und konnte nicht ertragen was ihm gerade widerfährt. Gut, das ist die eine Seite. Aber die Frage ist doch: Wie kann es so weit kommen?
Eine rein objektive Betrachtung stellt die ganze Sache mit subjektivem Empfinden unter ein schlechtes Licht, sowohl für die Holtzbrinck-Gruppe (*-VZ) als auch für unseren Rechtsstaat:
Wie es aussieht war als als versierter Programmierer relativ gut möglich Daten bei SchülerVZ auszuspionieren / zu crawlen. Daten, die früher oder später also jeder DAU sammeln konnte (social Hacking, etc.), konnte der verstorbene 20-jährige also etwas schneller sammeln. Normalerweise sind Firmen froh, wenn es dann Hacker gibt, die Lücken herausgeben und zahlen oft bereitwillig dafür, es gibt ja sogar Firmen, die Hacker anstellen und für so etwas bezahlen. War es denn so, dass der Betroffene tatsächlich in die Räume von StudiVZ ging und dort gleich 80.000 Euro gefordert hat? Gab es hier keinen Disput vorher, keine Verhandlungen?. Wie dem auch sei, hat er früher oder später eine Summe von 80.000 Euro gefordert, andernfalls würde er die Daten anderweitig verkaufen. Das ist natürlich kein Kavaliersdelikt, keine Frage, aber dafür gleich in die JVA zu stecken finde ich maßlos übertrieben. Der Staat wird immer korrupter, ich fühle mich inklusive Vorratsdatenspeicherung schon die ganze Zeit, als hätte die Stasi ein Revival erlebt.
Wenn Jugendliche jemanden krankenhaus reif schlagen, dann wird das in unserer Gesellschaft als nicht so schlimm wahrgenommen wie wenn jemand ein paar Daten sammelt, die im Internet sowieso für jeden bereitstehen. Das ist doch absurd.
Und: gab es bei dem 20-jährigen etwa Fluchtgefahr oder Ähnliches oder wieso wurde der gleich in die JVA gesteckt? Steht die Holtzbrinck-Gruppe nun in einer Mitschuld am tot? Wenn meine Daten nicht sicher sind, wer ist denn dann dafür verantwortlich? Der Hacker oder Holtzbrinck?
Ich boykottiere *-VZ.
Framework, Framework, Framework. Wenn diese 3 Worte, die übrigens dieselben sind (ha, da war der Trick), Verwirrung bei Ihnen auslösen –> oben rechts kann man den Browser schließen - oder aber Sie lesen das hier trotzdem und protzen morgen bei Ihren Arbeitskollegen mit dem neu erworbenen Wissen.
Vorab: In diesem Artikel wird auf das Schema von Application Frameworks eingegangen.
Achtung:
Bitte verwendet diese Version von ISPEM nicht (mehr)!
Hier ist ein Fehler unterlaufen, der Dank P.B. enthüllt wurde.
Bitte verwendet folgenden Link um eine korrekte sichere ISPEM-Funktion zu bekommen: ISPEM Sicherheitsupdate
Individual Secure Password Encryption Method, das ist ISPEM. Dahinter steckt nicht viel Innovatives, aber Nützliches. Auch heute sieht man, wenn man in den Quellcode schaut, bei vielen Programmen noch die MD5-Verschlüsselung.
Passwörter werden MD5-verschlüsselt in die DB eingetragen und verglichen. Um eingeloggt zu bleiben muss das verschlüsselte Passwort aber im Cookie gespeichert werden und hier beginnt das Risiko von normaler MD5-Verschlüsselung: Wird das Cookie durch XSS oder auch auf andere Weise gestohlen lässt man entweder Bruteforce, oder noch viel einfacher, einen Decryptor drüberlaufen. Denn viele wissen nicht, dass es offen zugängliche MD5-Datenbanken gibt, die jede Verschlüsselung speichern und demnach auch reversibel funktionieren.
Die Lösung ist ISPEM. ISPEM ist die Verknüpfung verschiedener Methoden mit MD5.
define('ISPEM_FCONST_SPL','your_unknown_value1',true); define('ISPEM_SCONST_SPL','your_unknown_value2',true); function ISPEM_encrypt($clear_password){ $p = str_rot13($clear_password); $p = base64_encode($p); $S1 = md5(ISPEM_FCONST_SPL,true); $S2 = md5(ISPEM_SCONST_SPL,false); $SC = md5(strlen($p).$S1,false); $p = substr(($S2.$SC),0,45); return $p; //liefert einen 45 zeichenlangen Encrypted String, unknackbar }
Dadurch, dass der String abgeschnitten ist ist es prinzipiell unmöglich, dass wahre Passwort rauszufinden.
Wäre die kodierte konstante an hinterer Stelle, wäre es einfacher, da man dann nach Abzug von 13 Zeichen “nur” noch den SC-String hätte.
Bei ISPEM fehlt dem Cracker aber ein wichtiger Teil des SC-Strings, den er nicht “schätzen” kann, da er das Passwort nicht kennt.
Mit ISPEM ist man in Sachen Verschlüsselung auf der richtigen Seite. Natürlich gibt es keine ISPEM_decode, da es nicht reversibel ist.
ISPEM steht natürlich völlig frei zur Nutzung.
Nachtrag (So, 19. Juli 2009):
Das substr() kann natürlich auch variieren. Eine Idee wäre z.B. statt einfach nur substr($str,0,45) ein mehrteilig abgeschnittenes Crypting zu nutzen, durch substr($str, 4, 49);.
Gestern habe ich durch ein Forum den ersten Nachahmer meines Namenprinzips gefunden: newsider.de. Anscheinend eine “News Community”. Der Namensurahn ist nur unschwer zu erkennen und findet sich auch im Slogan wieder “[...] Insider News [..]“. Das Problem ist nur, dass man dort keine Insider News findet, lediglich einen Newsaggregator verschiedener, beliebiger Blogs.
Ich hoffe, dass sich dieser Trend nicht fortsetzt, denn es ist stark paradox ein Insider sein zu wollen im Namen, in Realität das aber nicht anbieten kann.
Gerne würde ich sowas aber sehen, wenn die Qualität stimmt, dann wäre ich auch mal ein Trendsetter ;).
5 kaputte CD-R’s, eine kaputte CD-RW und eine zerstörterte DVD-RW sind das Ergebnis eines bösen Tages.
Immer wieder habe ich dieselbe ISO gebrannt, das Ergebnis waren unbrauchbare, unlesbare CDs. Als ich dachte es läge an der ISO, was eigentlich nicht sein konnte, lud ich die ISO-Datei erneut herunter (Ubuntu). Doch die Fehler blieben. Nachdem mir der PC auch noch meine DVD geschrottet hat hat es mir gereicht. Ich hab im Internet nach vielen Keywörtern gesucht bis ich zu einem Ergebnis kam, das mich überraschte.
Da hatte jemand Probleme mit Seinem Satego Toshi (den hab ich auch), der Brenner wollte einfach nicht. Er fand aber heraus, auf was ich nie im Leben gekommen wäre: die Virtualisierungssoftware für Laufwerke ist Schuld! In seinem Fall Daemon Tools, in meinem Fall Virtual Clone Drive von Slysoft. Und das stimmte tatsächlich - kaum war Clone Drive weg, konnte die ISO ohne Probleme gebrannt werden.
Wer also massive Probleme mit seinem Brenner hat sollte versuchen jegliche Software zu entfernen, die in irgendeiner Weise virtuelle Laufwerke bereitstellt.
Ich mag neue Technologien. Vor allem Ideen aus den Mozilla Labs schaue ich mir gerne mal an. Als inoffizielles Konkurrenzprodukt in den frühen Alpha-Phasen gegenüber Adobe AIR, soll Prism ebenfalls Web und PC verbinden. Als interessierter Entwickler habe ich mir Prism auf Ubuntu installiert und vor dem Start erst einmal nach einer Programmierdokumentation geschaut - vergebens. Das liegt daran, dass es nicht wirklich eine gibt. Alles was man können muss ist das, was man eigentlich schon vorher konnte: Websprachen.
Als ich Prism nämlich startete hat sich schnell großes Ernüchtern eingestellt. Mozilla Prism ist entweder der schlechteste Browser der Welt, oder einfach nur ein Kinderspielzeug. Natürlich ist Prism noch in den frühen Entwicklungsphasen, aber von Innovation ist keine Spur. Prism ist ein minimalistischer Browser, der nicht einmal eine Adressleiste hat, sondern lediglich den Browserinhalt anzeigt. URL’s können jeweils nur einmalig eingegeben werden. Man doppelklickt auf Prism, gibt beispielsweise http://google.com/ ein und man bekommt ein Google.com Icon auf den Desktop. Das ist nichts anderes als eine Verknüpfung die Prism öffnet und dann http://google.com/ lädt.
Das bedeutet, dass sich der eigentliche Sinn von Prism darin beschreibt, dass man oft besuchte Seiten per Verknüpfung auf den Desktop legt und dann mit einem Browser ohne Funktionen surft. Für den Entwickler ist der Sinn von Prism und die damit verbundene Arbeit nicht in einem geordneten Verhältnis:
Der Entwickler muss die Daten des Browsers auslesen und prüfen, ob man mit Prism surft. Wenn ja, dann passt man vorerst per JavaScript die Fenstergröße von Prism an, sodass die eigene Webapplikation, die mit Prism perfekt laufen soll, sich wie gewünscht auf dem Desktop einschmiegt. Dann gestaltet man die Webapplikation so, dass man sie ohne jegliche weitere Browserfunktionen problemlos bedienen kann, d.h. alles muss zwingend in einem Fenster zu bearbeiten sein.
Prism ist momentan nicht mehr als ein Spielzeug für Entwickler, das aber nach einigen Minuten langweilig wird. Ich warte immernoch darauf, dass sich in Prism, genau wie in Adobe AIR, eine eigene Sprache erschließt mit riesigem Funktionsumfang und Zusammenspiel mit dem eigenen lokalen Computer.
Letzte Woche habe ich mir Gedanken über Marketing, Markethingmethoden und dem damit zusammenhängendem Besucheraufkommen auf Webseiten gemacht.
Was ich herausgefunden habe war recht interessant. Ohne es statistisch belegen zu können, so bin ich mir doch sehr sicher, dass ein Besucheraufkommen immer auf eine exponentielle mathematische Funktion zurückzuführen ist - natürlich nicht andauernd dieselbe, aber doch annähernd. Weiterlesen »