Monat: Oktober 2011

Datenschutz: die Großen und die Kleinen Sünder

25. Oktober 2011 - Uncategorized

Nach der Datenschutzaktion auf meinen Webseiten (Datenschutzerklärung im Impressum bezüglich der Verwendung von  facebook, google, twitter und co) habe ich mich mal bei den Großen mit dem Firefox Plugin Ghostery umgesehen und  dort ins Impressum geschaut.

Ich glaube, vor uns kleinen Bloggern holt man erst die großen Blogger.

Bild.de hat als Mithörer ohne Erwähnung in den Datenschutz-Erklärungen

  • Google Analytics
  • NuggAd
  • SMART AdServer
  • Vibrant Ads

stern.de hat ohne Erwähung

  • DoubleClick
  • Facebook
  • Google Analytics
  • Omniture

spiegel.de hat ohne Erwähnung

  • 24/7 Real Media
  • Facebook
  • Newtention
  • Value Click Mediaplex

Vielleicht reicht das ja vor Gericht. Hab die drei mal angeschrieben und um Aufklärung gebeten. Schaun mir mal, was dabei rauskommt.

Datenschutzerklärungen nicht vergessen

25. Oktober 2011 - Uncategorized

Aufgeschreckt durch die anhaltenden Diskussionen habe ich jetzt mehrere Webseiten mit ausführlichen Datenschutzerklärungen aufgerüstet. U.a. für

  • Google Maps
  • Google +1
  • Facebook
  • Twitter
  • WordPress Stats

Unter Umständen muß man auch noch eine Allgemeine Datenschutzerklärung hinzufügen, wenn man selbst Kundendaten speichert und ggf. auswertet. Wer mit Google Analytics arbeitet, muß sich was dazu besorgen.

Akismed hatte ich wegen allzu großer juristischer Bedenken vorher überall entsorgt.

Hier mal der Maximaltext, ohne rechtliche Garantie, nur so zum Informieren.

Bei Heise gibt es ein jQuery Plugin für „Privacy in Social Networks“.

Textquelle war u.a. spreerecht.de

Ach, so:  hab mir dann das Ghostery Plugin für Firefox besorgt um zu schauen, wer da alles auf den Webseiten mitschneidet, was der Benutzer macht.

Wenn man damit die Internet-News-Portale  aufruft und dann in deren Impressi(?) Impressums(?)  nachsieht:

da findet man wenige Hinweise auf die vielen Dienste, die da horchen. Aber egal, ich möchte hier sauber sein.

Und jetzt die Texte.

Datenschutzerklärung

 Wir erheben und verwenden Ihre personenbezogenen Daten ausschließlich im Rahmen der Bestimmungen des Datenschutzrechts der Bundesrepublik Deutschland. Im Folgenden unterrichten wir Sie über Art, Umfang und Zwecke der Erhebung und Verwendung personenbezogener Daten. Sie können diese Unterrichtung jederzeit auf unserer Webseite abrufen.

Datenübermittlung und -protokollierung zu systeminternen und statistischen Zwecken

Ihr Internet-Browser übermittelt beim Zugriff auf unsere Webseite aus technischen Gründen automatisch Daten an unseren Webserver. Es handelt sich dabei unter anderem um Datum und Uhrzeit des Zugriffs, URL der verweisenden Webseite, abgerufene Datei, Menge der gesendeten Daten, Browsertyp und -version, Betriebssystem sowie Ihre IP-Adresse. Diese Daten werden getrennt von anderen Daten, die Sie im Rahmen der Nutzung unseres Angebotes eingeben gespeichert. Eine Zuordnung dieser Daten zu einer bestimmten Person ist uns nicht möglich. Diese Daten werden zu statistischen Zwecken ausgewertet und im Anschluss gelöscht.
Bestandsdaten

Sofern zwischen Ihnen und uns ein Vertragsverhältnis begründet, inhaltlich ausgestaltet oder geändert werden soll, erheben und verwenden wir personenbezogene Daten von Ihnen, soweit dies zu diesen Zwecken erforderlich ist.
Auf Anordnung der zuständigen Stellen dürfen wir im Einzelfall Auskunft über diese Daten (Bestandsdaten) erteilen, soweit dies für Zwecke der Strafverfolgung, zur Gefahrenabwehr, zur Erfüllung der gesetzlichen Aufgaben der Verfassungsschutzbehörden oder des Militärischen Abschirmdienstes oder zur Durchsetzung der Rechte am geistigen Eigentum erforderlich ist.
Nutzungsdaten

Wir erheben und verwenden personenbezogene Daten von Ihnen, soweit dies erforderlich ist, um die Inanspruchnahme unseres Internetangebotes zu ermöglichen oder abzurechnen (Nutzungsdaten). Dazu gehören insbesondere Merkmale zu Ihrer Identifikation und Angaben zu Beginn und Ende sowie des Umfangs der Nutzung unseres Angebotes.
Für Zwecke der Werbung, der Marktforschung und zur bedarfsgerechten Gestaltung unseres Internetangebotes dürfen wir bei Verwendung von Pseudonymen Nutzungsprofile erstellen. Sie haben das Recht, dieser Verwendung Ihrer Daten zu widersprechen. Die Nutzungsprofile dürfen wir nicht mit Daten über den Träger des Pseudonyms zusammenführen.
Auf Anordnung der zuständigen Stellen dürfen wir im Einzelfall Auskunft über diese Daten (Bestandsdaten) erteilen, soweit dies für Zwecke der Strafverfolgung, zur Gefahrenabwehr, zur Erfüllung der gesetzlichen Aufgaben der Verfassungsschutzbehörden oder des Militärischen Abschirmdienstes oder zur Durchsetzung der Rechte am geistigen Eigentum erforderlich ist.
Cookies

Um den Funktionsumfang unseres Internetangebotes zu erweitern und die Nutzung für Sie komfortabler zu gestalten, verwenden wir so genannte „Cookies“. Mit Hilfe dieser „Cookies“ können bei dem Aufruf unserer Webseite Daten auf Ihrem Rechner gespeichert werden. Sie haben die Möglichkeit, das Abspeichern von Cookies auf Ihrem Rechner durch entsprechende Einstellungen in Ihrem Browser zu verhindern. Hierdurch könnten allerdings der Funktionsumfang unseres Angebotes eingeschränkt werden.
Auskunftsrecht

Als Nutzer unseres Internetangebotes haben Sie das Recht, von uns Auskunft über die zu Ihrer Person oder zu Ihrem Pseudonym gespeicherten Daten zu verlangen. Auf Ihr Verlangen kann die Auskunft auch elektronisch erteilt werden.

Datenschutzerklärung Google +1-Schaltfläche

Unser Internetauftritt verwendet die “+1″-Schaltfläche des sozialen Netzwerkes Google Plus, welches von der Google Inc., 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States betrieben wird (“Google”). Der Button ist an dem Zeichen “+1″ auf weißem oder farbigen Hintergrund erkennbar.

Wenn Sie eine Webseite unseres Internetauftritts aufrufen, die eine solche Schaltfläche enthält, baut Ihr Browser eine direkte Verbindung mit den Servern von Google auf. Der Inhalt der “+1″-Schaltfläche  wird von Google direkt an Ihren Browser übermittelt und von diesem in die Webseite eingebunden. Wir haben daher keinen Einfluss auf den Umfang der Daten, die Google mit der Schaltfläche erhebt. Laut Google werden ohne einen Klick auf die Schaltfälche keine personenbezogenen Daten erhoben. Nur bei eingeloggten Mitgliedern, werden solche Daten, unter anderem die IP-Adresse, erhoben und verarbeitet.

Zweck und Umfang der Datenerhebung und die weitere Verarbeitung und Nutzung der Daten durch Google sowie Ihre diesbezüglichen Rechte und Einstellungsmöglichkeiten zum Schutz Ihrer Privatsphäre entnehmen Sie bitte Googles Datenschutzhinweisen zu der “+1″-Schaltfläche: http://www.google.com/intl/de/+/policy/+1button.html und der FAQ: http://bit.ly/r3Qmer.

Wenn Sie Google Plus-Mitglied sind und nicht möchten, dass Google über unseren Internetauftritt Daten über Sie sammelt und mit Ihren bei Google gespeicherten Mitgliedsdaten verknüpft, müssen Sie sich vor Ihrem Besuch unseres Internetauftritts bei Google Plus ausloggen.

Datenschutzerklärung Stats

Diese Website benutzt WordPress.com-Stats, ein Tool zur statistischen Auswertung der Besucherzugriffe, betrieben von Automattic Inc., 60 29th Street #343, San Francisco, CA 94110-4929, USA, unter Einsatz der Trackingtechnologie von Quantcast Inc., 201 3rd St, Floor 2, San Francisco, CA 94103-3153, USA. WordPress.com-Stats  verwendet sog. “Cookies”, Textdateien, die auf Ihrem Computer gespeichert werden und die eine Analyse der Benutzung der Website durch Sie ermöglichen. Die durch den Cookie erzeugten Informationen über Ihre Benutzung dieses Internetangebotes werden auf einem Server in den USA gespeichert. Die IP-Adresse wird sofort nach der Verarbeitung und vor deren Speicherung anonymisiert. Sie können die Installation der Cookies durch eine entsprechende Einstellung Ihrer Browser-Software verhindern; wir weisen Sie jedoch darauf hin, dass Sie in diesem Fall gegebenenfalls nicht sämtliche Funktionen dieser Website vollumfänglich nutzen können. Sie können der Erhebung und Nutzung der Daten durch Quantcast mit Wirkung für die Zukunft widersprechen, indem Sie an dieser Stelle durch einen Klick auf den Link “Click here to opt-out” ein Opt-Out-Cookie in Ihrem Browser setzen: http://www.quantcast.com/opt-out. Sollten Sie alle Cookies auf Ihrem Rechner löschen, müssen Sie das Opt-Out-Cookie erneut setzen.

Datenschutzerklärung Facebook

Unser Internetauftritt verwendet Social Plugins („Plugins“) des sozialen Netzwerkes facebook.com, welches von der Facebook Inc., 1601 S. California Ave, Palo Alto, CA 94304, USA betrieben wird („Facebook“). Die Plugins sind an einem der Facebook Logos erkennbar (weißes „f“ auf blauer Kachel oder ein „Daumen hoch“-Zeichen) oder sind mit dem Zusatz „Facebook Social Plugin“ gekennzeichnet. Die Liste und das Aussehen der Facebook Social Plugins kann hier eingesehen werden: http://developers.facebook.com/plugins.

Wenn Sie eine Webseite unseres Internetauftritts aufrufen, die ein solches Plugin enthält, baut Ihr Browser eine direkte Verbindung mit den Servern von Facebook auf. Der Inhalt des Plugins wird von Facebook direkt an Ihren Browser übermittelt und von diesem in die Webseite eingebunden. Wir haben daher keinen Einfluss auf den Umfang der Daten, die Facebook mit Hilfe dieses Plugins erhebt und informieren Sie daher entsprechend unserem Kenntnisstand:

Durch die Einbindung der Plugins erhält Facebook die Information, dass Sie die entsprechende Seite unseres Internetauftritts aufgerufen haben. Sind Sie bei Facebook eingeloggt, kann Facebook den Besuch Ihrem Facebook-Konto zuordnen. Wenn Sie mit den Plugins interagieren, zum Beispiel den Like Button betätigen oder einen Kommentar abgeben, wird die entsprechende Information von Ihrem Browser direkt an Facebook übermittelt und dort gespeichert. Falls Sie kein Mitglied von Facebook sind, besteht trotzdem die Möglichkeit, dass Facebook Ihre IP-Adresse in Erfahrung bringt und speichert.

Zweck und Umfang der Datenerhebung und die weitere Verarbeitung und Nutzung der Daten durch Facebook sowie Ihre diesbezüglichen Rechte und Einstellungsmöglichkeiten zum Schutz Ihrer Privatssphäre entnehmen Sie bitte den Datenschutzhinweisen von Facebook: http://www.facebook.com/policy.php.

Wenn Sie Facebookmitglied sind und nicht möchten, dass Facebook über unseren Internetauftritt Daten über Sie sammelt und mit Ihren bei Facebook gespeicherten Mitgliedsdaten verknüpft, müssen Sie sich vor Ihrem Besuch unseres Internetauftritts bei Facebook ausloggen.

Ebenfalls ist es möglich Facebook-Social-Plugins mit Add-ons für Ihren Browser zu blocken, zum Beispiel mit dem „Facebook Blocker„.

Datenschutzerklärung für die Nutzung von Twitter-Plugins (tweet-Button)

Auf unseren Seiten sind Plugins des Kurznachrichtennetzwerks Twitter Inc., 795 Folsom St., Suite 600, San Francisco, CA 94107, USA integriert. Die Twitter-Plugins (tweet-Button) erkennen Sie an dem Twitter-Logo auf unserer Seite. Eine Übersicht über den tweet-Button finden Sie hier: http://dev.twitter.com/ Wenn Sie unsere Seiten besuchen, wird über das Plugin eine direkte Verbindung zwischen Ihrem Browser und dem Twitter-Server hergestellt. Twitter erhält dadurch die Information, dass Sie mit Ihrer IP-Adresse unsere Seite besucht haben. Wenn Sie den Twitter „tweet-Button“ anklicken, während Sie in Ihrem Twitter-Account eingeloggt sind, können Sie die Inhalte unserer Seiten auf Ihrem Twitter-Profil verlinken. Dadurch kann Twitter den Besuch unserer Seiten Ihrem Benutzerkonto zuordnen. Wir weisen darauf hin, dass wir als Anbieter der Seiten keine Kenntnis vom Inhalt der übermittelten Daten sowie deren Nutzung durch Twitter erhalten. Weitere Informationen hierzu finden Sie in der Datenschutzerklärung von Twitter unter http://twitter.com/privacy

Wenn Sie nicht wünschen, dass Twitter den Besuch unserer Seiten Ihrem Twitter-Nutzerkonto zuordnen kann, loggen Sie sich bitte aus Ihrem Twitter-Benutzerkonto aus.

Datenschutzerklärung Google Maps

Diese Internetseite benutzt auf der Unterseite „Kontakt“ die Google Maps API, einen Kartendienst der Google Inc. („Google“), zur Darstellung einer interaktiven Karte. Durch die Nutzung von Google Maps können Informationen über Ihre Benutzung dieser Website (einschliesslich Ihrer IP-Adresse) an einen Server von Google in den USA übertragen und dort gespeichert werden. Google wird diese Informationen gegebenenfalls an Dritte übertragen, sofern dies gesetzlich vorgeschrieben ist oder soweit Dritte diese Daten im Auftrag von Google verarbeiten.

Google wird in keinem Fall Ihre IP-Adresse mit anderen Daten von Google in Verbindung bringen. Trotzdem wäre es technisch möglich, dass Google aufgrund der erhaltenen Daten eine Identifizierung zumindest einzelner Nutzenden vornehmen könnte. Es wäre möglich, dass personenbezogene Daten und Persönlichkeitsprofile von Nutzern der Website von Google für andere Zwecke verarbeitet werden könnten, auf welche wir keinen Einfluss haben und haben können. Dies und die Tatsache, dass Daten in die USA übermittelt werden, ist aus datenschutzrechtlichen Gründen problematisch.

Sie haben die Möglichkeit, den Service von Google Maps auf einfache Art und Weise zu deaktivieren und somit den Datentransfer an Google zu verhindern: Deaktivieren Sie dazu JavaScript in Ihrem Browser. Wir weisen Sie jedoch darauf hin, dass Sie in diesem Fall die Kartenanzeige nicht nutzen können.

Durch die Nutzung dieser Website und das Nichtdeaktivieren der JavaScript-Funktion erklären Sie ausdrücklich in Kenntnis der datenschutzrechtlichen Problematik, dass Sie mit der Bearbeitung der über Sie erhobenen Daten durch Google in der zuvor beschriebenen Art und Weise und zu dem zuvor benannten Zweck einverstanden sind.

Komplexe Formulare, rekursives Ajax und promise() Interface

21. Oktober 2011 - HTML, JavaScript

Nehmen wir mal an, dass ihr auf auf eurer Webseite ein komplexes Formular habt (Beispiel: order.php), in dem viel geprüft (Spam, Adressen…) werden muss, was die Wahrscheinlichkeit erhöht, dass das Formular mehrfach zwischen Client und Server hin- und hergeschickt wird. Nun möchtet ihr dieses Formular  ohne Änderungen an mehreren Stellen eurer Webseite aufrufen können, ohne dass der Benutzer die aktuelle Seite verlassen muss.

Hier ist eine Lösung dafür.

English Summary: If you want to call a complex form page (order sheet, inquiry form,…) from several locations inside your website without the need to follow a link to that form page, here is a solution using recursive Ajax, UI-Dialog und the jQuery promise interface.

Dieses kurze Javascript sorgt dafür, dass euer Formular richtig ausgefüllt wird. Bei Fragen: bitte Kommentar schicken.

jQuery(document).ready(
function()
{

jQuery(".****class der Elemente, die das Formular aufrufen können****").click(
function()
{
var sendpost=jQuery.Deferred();
function send_post_req ()
sendpost=jQuery.post(order.php);
}
function show_post (response) {
clean_up();
jQuery("***id des Elements auf der Seite, nach dem eingefügt werden soll***").append('<div id="**ID des Formulars****" style="display: none;">'+response+'</div>');
}
function clean_up () {
jQuery("**ID des Formulars****").remove();
}

function add_submit () {
jQuery("form #**** ID eures Submit-Buttons****").click ( function (e) {
e.preventDefault;
var ser2=jQuery('form').serialize();
sendpost=jQuery.post(order.php, ser2);
proc_post();
});
}
function add_dialog ()
jQuery("**ID des Formulars****").dialog({
width: 600,
resizable: true,
title: 'Einfache Bestellung',
position: 'center',
close: function(event, ui) { clean_up();
}
});

}
send_post_req();
proc_post();
function proc_post() {
jQuery.when (sendpost)
.done (function (response) {
show_post (response);
add_dialog();
add_submit();
});
}
});
});

Zunächst werden einige Funktionen definiert:
send_post_req:  Post-Request; damit holen wir den Inhalt eurer Formular-Seite zum ersten Mal
show_post:  damit wird der Inhalt  im DOM der aktuellen Seite unsichtbar angelegt
clean_up:  damit wird dieser Inhalt bei Bedarf wieder entfernt
add_submit:  übernimmt den Submit-Button und schickt das Formular an den Server zurück
add_dialog:  stellt den Inhalt des Formulars in einem UI-Dialog auf der Seite dar.
proc_post:  bindet alle Funktionen zusammen und nutzt das promise Interface von jQuery.

Gestartet wird in das Ganze in der Zeile 39.

Die Zeile 25 sorgt für das rekursive Abarbeiten, wenn das Formular mehrmals zwischen Server und Client hin- und hergeschickt werden muss.

Damit proc_post nicht schon verfrüht losfeuert, wird in Zeile 8 ein Deferred Objekt (sendpost) erzeugt, auf das proc_post warten muss.  Dieses Objekt wird in send_post_req überschrieben, so dass proc_post jetzt auf den Ausgang der Ajax-Anfrage wartet.

Die zweite Ajax-Anfrage in add_submit schickt beim Anklicken den mit einem zweiten Parameter serialisierten Inhalt eures (hoffentlich vom Benutzer ausgefüllten) Formulars  an den Server.  Dabei wird das „resolved“ Deferred sendpost überschrieben und wieder aktiviert.

Für die wenigen, die es noch nicht wissen:  jQuery und Javascript kann man prima und ohne Formalitäten bei jsFiddle austesten.

Wenn ihr mit einem Content-Management System arbeitet, werdet Ihr in der Regel keine Seite „order.php“ haben, weil dort die Seite erst auf Anforderung vom CMS zusammen gebaut wird .

Im Falle CMS=wordpress kann man so vorgehen:

Der Post-Request muss etwas modifiziert werden (Doku hier)


var nf_data = {
action: 'order',
_ajax_nonce: MyAjax.akt_nonce
};
sendpost=jQuery.post(MyAjax.ajaxurl, jQuery.param(nf_data));

MyAjax.ajaxurl ist die Seite, die den Request erhalten soll: admin-ajax.php. Wo sie im Verzeichnisbaum liegt, muss dem Script über


wp_localize_script('simple', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php'),
'akt_nonce' => $this->nonce) );

mitgeteilt werden. Zusätzlich  wird noch ein Nonce  zum Überprüfen des Requests  mitgegeben.

action: ‚order‘ ist eure callback-Funktion (hier:“order“), die von admin-ajax.php aufgerufen wird und das Formular erzeugt.

Der zweite Post-Request sieht so aus:


var ser2=jQuery('form').serialize();
var ser=jQuery.param(nf_data);

sendpost=jQuery.post(MyAjax.ajaxurl, ser+'&'+ser2 );

Zum besseren Verständnis könnt Ihr den Original Code hier downloaden:  Template einfacher_bestellen

Denkt bitte daran: das Plugin muss für eure Zwecke noch modifiziert werden. Der Code für das Formular ist z.B. in einer Klasse enthalten, die in der Webseite an anderer Stelle definiert und hier nicht beigefügt wird.
Einige Teile des jQuery Codes sind formularspezifisch (z.B. wird das Formular über „form.yform“ gefunden).