Javascript: Funktionen Referenz oder Execution

Ein kleiner Ausflug in die Welt der Javascriptprogrammierung. Kurz vorweg, das ist nicht JQuery. Es gibt noch mehr Frameworks und andere Ansätze erlauben auch andere Dinge. Javascript ist da sehr flexibel.

Heute geht es um Funktionsreferenzen. Diese Funktion soll aufgerufen werden :

        function login() {

            var dummy = document.createElement("div");
            if ( dummy.loadURL("cmd/login",$("user").toURI()+"&"+$("pass").toURI()) ) {
                var result = dummy.getValue().trim();
                if ( result == "OK" ) {
                    $("anzeige").loadURL("cmd/listen","");
                } else {
                    $("errormsg").HTML("Leider konnten wir Sie nicht anmelden:
"+ result );
                }
            } else {
                    $("errormsg").HTML("Leider konnten wir Sie nicht anmelden:
"+ result );
            }
        }

Wie man leicht erkennen kann, gibt diese Funktion nichts zurück, soll Sie auch gar nicht.

Dieses kleine Beispiel verwendet die Funktion auf zwei Arten auf:

        window.onload = function() {
             $("anzeige").loadURL("anmelden.html","");
             $("loginbutton").onclick = login();
             $("anmelden").onclick = function(){
                 $("anzeige").loadURL("anmelden.html","");
                 $("loginbutton").onclick = login;
             }
         }

Jetzt raten Sie mal welche Version falsch ist 😉  OK, nicht so schwer. Natürlich ist das richtig:

             $("loginbutton").onclick = login;

Das onlick der Referenzzeiger für die Funktion ist, die beim Click auf das Element ausgeführt werden soll, dürfte bekannt sein, genau  onKeyUp, onKeyDown, onDrag usw. . für andere Events da sind.

Beim Klick auf das LoginButton soll also der Login erfolgen. Wenn man nun aber statt login login() schreibt,  dann wird die Funktion login gleich ausgeführt. Was zur Folge hat, daß obigen Code eine Webseite lädt und in ein Element schreibt, feststellt, daß es nicht ging und eine Errormeldung ausgibt. Der Klick auf das Loginbutton führt dann bestenfalls zu gar nichts, schlimmstenfalls zu einem Crash des Javascriptinterpreter, das kommt auf die Güte des Interpreters an. Kurz um, es passiert nicht was man wollte.

Jetzt die natürlich die Frage, gäbe es für login() auch eine legitime Verwendung, weil sonst könnte der Javascriptsyntaxchecker ja einfach mal vorher meckern.

Die Antwort ist leicht: Ja, die gibt es.

function test() {

     if ( window.location.href  == "meinefiktiveURL" ) {
           return function() {
                alert("Hallo");
           };
     }

     return function() { alert("Hier sind Sie falsch"); };
};

$("alarmknopf").onclick = test();

Damit sich darin ein Sinn ergibt, habe ich eine IF-ELSE Anweisung benutzt. Ich kann also dynamisch festlegen was passieren soll, wenn der Alarmknopf gedrückt wird. Vorteil, die IF-Abfrage wird nur einmal ausgeführt, nicht ständig, wenn jemand auf den Knopf drückt. Das ist natürlich bei einem einmaligen Event egal, aber bei Funktionen die mehrere tausend mal pro Sekunde aufgerufen werden, kann das grade bei Javascript zum Flaschenhals werden.

Natürlich kann man das auch so machen wie folgt, aber dann muß man das für jeden Knopf machen – Folge: es verbraucht mehr Ressourcen:

$("alarmknopf").onclick = function () {

        if ( window.location.href  == "meinefiktiveURL" ) {
                alert("Hallo");
        } else {
                alert("Hier sind Sie falsch");
        };
};

Google & Co und die E-Mailspionage

Lieber Leser,

ganz unüblich beginnt dieser Blogbeitrag mit einem Gesetzestext: §88 TKG ( Telekommunikationsgesetz )

Das Fernmeldegeheimnis

Darin heißt es in Absatz 3 :

„Den nach Absatz 2 Verpflichteten (das „Unternehmen“ A.d.R.) ist es untersagt, sich oder anderen über das für die geschäftsmäßige Erbringung der Telekommunikationsdienste einschließlich des Schutzes ihrer technischen Systeme erforderliche Maß hinaus Kenntnis vom Inhalt oder den näheren Umständen der Telekommunikation zu verschaffen. Sie dürfen Kenntnisse über Tatsachen, die dem Fernmeldegeheimnis unterliegen, nur für den in Satz 1 genannten Zweck verwenden. Eine Verwendung dieser Kenntnisse für andere Zwecke, insbesondere die Weitergabe an andere, ist nur zulässig, soweit dieses Gesetz oder eine andere gesetzliche Vorschrift dies vorsieht und sich dabei ausdrücklich auf Telekommunikationsvorgänge bezieht. Die Anzeigepflicht nach § 138 des Strafgesetzbuches hat Vorrang.“

Dieser Auszug ist das Fernmeldegeheimnis. Niemand darf den Inhalt oder die Beteiligten einer Kommunikation kennen, außer es ist zum Erbringen der Leistung zwingend notwenig; z.b. ein Briefträger, der muß ja die Adresse kennen wo es hin soll.

Verboten ist damit automatisch das Scannen von EMails zur Erlangung von Informationen zum Inhalt, außer Sie haben das als Kunde selbst veranlaßt. Dies kann z.b. die Antispameinstellung sein, oder eine Problemmeldung, weil eine EMail nicht angekommen ist. Im letzteren Fall muß ein Mensch wissen, wann und von dem, oder an wen, die Email gehen sollte, sonst kann man nicht nachsehen was schief ging.

Damit ist klar, daß man sich als Admin nicht einfach alle Emails der Kunden durchlesen darf, geschweige denn den Inhalt an Dritte weitergeben darf.

§ 206 StGb ( Strafgesetzbuch ) Absatz 1 stellt dafür bis zu 5 Jahre Knast in Aussicht:

„Wer unbefugt einer anderen Person eine Mitteilung über Tatsachen macht, die dem Post- oder Fernmeldegeheimnis unterliegen und die ihm als Inhaber oder Beschäftigtem eines Unternehmens bekanntgeworden sind, das geschäftsmäßig Post- oder Telekommunikationsdienste erbringt, wird mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe bestraft.“

Im §88 TKG  haben wir gelesen, daß es eine Ausnahme gibt, den § 138 des StGb. Darin wird definiert, was man als guter Bürger immer den Staat melden muß, egal wie man an die Informationen gelangt ist.

Dazu zählen u.a. anstehende Kriege ( kein Witz ), Kriegsverbrechen, Hoch- und Ladesverrat, Mord oder Todschlag, Entführung, Raub und andere gemeingefährliche Straftaten. Kurz um: Kapitalverbrechen.

Wohlgemerkt aber nur dann, wenn Sie das Verbrechen dadurch verhindern könnten. D.h. wenn Sie von einem Hochverrat oder Mord lesen und der schon passiert ist, dürfen Sie das nicht mehr melden. Melden Sie es nicht rechtzeitig, können Sie für 1 Jahr einfahren.

Welche Logik dahintersteckt, mag ich nicht erkennen.

Kinderpornos werden, wenn überhaupt, erst nach der Tat als Bild oder Film verschickt und können damit nicht mehr verhindert werden. Der Argumentation folgend, dürfte man in Deutschland die Emails danach nicht durchsuchen oder von Kenntnissen berichten.

Moralisch mag es richtig erscheinen, sich in die Kommunikation aller zum Schutz eines höheren Zieles einzuklinken ( Emails scannen ), rechtlich ist aber nicht erlaubt. Mit der gleichen Argumentation wurde auch die Vorratsdatenspeicherung eingeführt und dann vom Bundesverfassungsgericht gekippt, weil man eben doch nicht alle unter Generalverdacht stellen darf. Konrad Adenauer hat bei der Frage, ob im ( damaligen ) neuen Personalausweis ein Fingerabdruck drin sein soll, damals mit Nein geantwortet: „Die Deutschen sind kein Volk von Verbrechern.“ Und damit hatte er Recht. Nur weil ein schwarzes Schaf in der Herde ist, darf man nicht die ganze Herde bestrafen.

Für Sie als Kunden eines deutschen Unternehmens, besteht also rein rechtlich keine Gefahr, daß Ihre Emails gelesen oder ausgewertet werden. Bei Google [7] und Microsoft [6] sieht das schon anders aus, wie in der letzten Woche offenbar wurde. Diese Unternehmen scannen alle Emails ihrer Kunden und prüfen dabei Bilder per Bilderkennung gegen eine Kinderpornodatenbank. Google scannt Emails zusätzlich auch auf Schlüsselbegriffe, um den Kunden dann passende Werbung einzublenden.

Bei amerikanischen Unternehmen [8] können Richter nun auch Durchsuchungsanordnungen auf europäischen Servern ausstellen, mit der aberwitzig anmutenden Begründung, dazu müßte ja kein Mitarbeiter amerikanischen Boden verlassen.

Fazit: Kündigen Sie Ihre GMail und Windows Livekonten, Google Drives und was da noch so angeboten wird als Cloudlösung und suchen Sie sich einen deutschen Provider, wenn Ihnen Ihre Bürgerrechte irgendetwas wert sind. Im Zweifel werden auch deutsche Tochterunternehmen amerikanischer Anbieter die Daten an die Mutter übermitteln, falls Schaden entstehen sollte, wenn es nicht passiert.

Notizen

Beim Durchstöbern der Gesetze habe ich diesen netten Paragrafen gefunden :

§ 202a Ausspähen von Daten
(1) Wer unbefugt sich oder einem anderen Zugang zu Daten, die nicht für ihn bestimmt und die gegen unberechtigten Zugang besonders gesichert sind, unter Überwindung der Zugangssicherung verschafft, wird mit Freiheitsstrafe bis zu drei Jahren oder mit Geldstrafe bestraft.

Da Emails normalerweise keinen Schutz gegen Mitlesen haben, weil Sie wie Postkarten funktionieren, ist das Abfangen von Netzwerkströmen in Rechenzentren übrigens nicht strafbar. Das liegt an dem kleinen Wort „und“ oben, denn Emails werden in Klartext verschickt und übermittelt, wenn man keine Transportverschlüsselung aktiviert hat. Ihr Anbieter wird dies i.d.R. unterstützen, unserer tut es definitiv, aber leider aktivieren nicht alle Kunden in Ihrem Emailprogrammen die nötigen Optionen. Wer also diese Datenübertragung mitschneidet, so er denn kann und das ist einfacher als Sie glauben, ist zwar „unbefugt“, umgeht aber keine technische Sperre.

Daher können wir Ihnen nur dringend raten TLS und SSL ( ältere Methode ) zu aktivieren, wenn Sie ein Emailkonto einrichten.

Das gleiche gilt auch, wenn Sie Emails unverschlüsselt abholen, Webseiten unverschlüsselt aufrufen oder sonstige Daten zu einem Server übertragen.

§ 202b Abfangen von Daten
Wer unbefugt sich oder einem anderen unter Anwendung von technischen Mitteln nicht für ihn bestimmte Daten (§ 202a Abs. 2) aus einer nichtöffentlichen Datenübermittlung oder aus der elektromagnetischen Abstrahlung einer Datenverarbeitungsanlage verschafft, wird mit Freiheitsstrafe bis zu zwei Jahren oder mit Geldstrafe bestraft, wenn die Tat nicht in anderen Vorschriften mit schwererer Strafe bedroht ist.

Klingt erstmal gut, ist aber genauso schlecht formuliert, wie §202a .  Nichtöffentliche Kommunikation wäre z.b. die Rohrpost in einer Firma. Das Internet ist aber selbst in einem Rechenzentrum öffentlich. Gelingt es Ihnen von einem Ihnen gehörenden Server im Rechenzentrum, die Datenströme anderer dortiger Server abzufangen, was wie gesagt, ganz einfach ist, dann kommen Sie wieder ungeschoren davon, weil es öffentliche Kommunikation war. Zumindet bei dem Paragrafen. Störung der Funktion eines anderen Servers ist auch keine Bagatelle, aber das steht woanders 🙂

Jetzt können sich Juristen darüber streiten wie sie möchten, Fakt ist leider, daß das Ausspionieren von Daten schwer in Mode und zudem noch extrem einfach ist. Daher kann ich nach bestem Gewissen nur deutsche Anbieter empfehlen, die Verschlüsselungstechniken anbieten. Bei einem guten Anbieter bekommen Sie sowas auch ohne Aufpreis mitgeliefert.  Wie man es nicht macht, zeigt übrigens die Deutsche Telekom. Die hat erst vor rund 12 Monaten mitbekommen, daß irgendwann in den 90er Jahren des letzten Jahrtausends, die Transportwegverschlüsselung für Emails erfunden wurde. Andere Unternehmen waren da deutlich früher aktiv.

Quellen:

[1] http://www.gesetze-im-internet.de/tkg_2004/__88.html

[2] http://www.gesetze-im-internet.de/stgb/__138.html

[3] http://www.gesetze-im-internet.de/stgb/__202b.html

[4] http://www.gesetze-im-internet.de/stgb/__202a.html

[5] http://www.gesetze-im-internet.de/stgb/__206.html

[6] http://www.focus.de/digital/computer/internet-auch-microsoft-durchsucht-mail-konten-nach-kinderpornografie_id_4044025.html

[7] http://www.heise.de/newsticker/meldung/Kinderpornographie-Google-verteidigt-E-Mail-Scan-2284919.html

[8] http://www.computerbase.de/2014-08/microsoft-muss-us-behoerden-saemtliche-nutzerdaten-aushaendigen/

[9] http://evolution-hosting.eu/Securityprodukte#email

Vorfall – 917242806947

Da erreichte uns doch gestern schon folgende Email :

Guten Tag,

Am 31-07-2014 wurde von Ihrem Rechner mit der IP-Addresse 119.243.149.123 um 00:33:12 der Film "Inglorious Basterds" geladen. Nach §19a UrhG ist dies ein krimineller Verstoß. Unsere Anwaltskanzlei muss dies ans zuständige Gericht weiterleiten, außer Sie Zahlen ein außergerichtliches Bußgeld in Höhe von 274.54 Euro an uns.
Die Rechnung "613.cab" entnehmen Sie dem Anhang.

Hochachtungsvoll,
Siavach Hock
+498511989392

Das wäre die erste sich selbst installierende Rechnung aller Zeiten 🙂 Zu CAB Dateien hatten wir hier erst vor wenigen Wochen einen passenden Eintrag gepostet : öfter mal was neues: CAB Viren.

Ein klarer Fall von Betrug, zu mal die IP aus Japan ist. 😉  Genau wie in allen anderen Abmahnungsfällen gilt, Post von Anwalt gibt es nicht per Email.

Also wie üblich, ab in die digitale Tonne damit.

Ein kleines Schmankerln hätte ich da allerdings noch für Sie. Das Programm, daß diesen Virus produziert hat, nenn sich selbst „Shamanistic v3.9“ 🙂 Vermutlich wegen des unsicheren Ausgangs der Virenbehandlung 🙂