E-Mail Adressen automatisch verschlüsseln?

Hallo!

Ich habe eine Plattform übernommen in der es u.a. an die 1000 E-Mail Adressen gibt. Bis jetzt wurden die einfach als mailto-Link angezeigt (gefundenes Fressen für Robots), nur kam die Idee eines Professors, das wäre doch ein sehr gutes Projekt die Adressen zu verschlüsseln :rolleyes:

Okay, guter alter Trick mit Unicode und JS, das Problem ist nur: Wie kann ich die mailto-Links automatisch in die JS-Links umwandeln? Wenn ich da alle Adressen einzeln und manuell umschreiben muss sitze ich in 3 Wochen noch dran ...
Die Mail-Adressen stehen als Text in einer mySQL-DB und werden durch ein PHP-Skript aufgefrufen.

Oder gibt es andere Möglichkeiten als mit JS? Dass sie während des Aufrufs mit PHP verschlüsselt werden? In der DB stört es ja nicht, wenn die Mail-Adressen unverschlüsselt sind, im HTML-Quelltext sollen sie es halt sein. Irgendwelche fertigen Codeschnipsel nehme ich natürlich gerne 8)

mfg & tia

RemoteC
 
Also ich würde von JS absehen, denn was machst du wieder mit Leuten, die das deaktiviert haben?

Ich würde es entweder so umsetzen, wie es hier auch im Forum gemacht wird, also per Formular, so würde der Absender die E-Mail-Adresse gar nicht zu sehen bekommen, oder vielleicht aus der Adresse ein Bild generieren lassen, welches dem Benutzer angezeigt wird. Das Bild hätte natürlich den Nachteil, dass du es wieder nicht anklickbar machen kannst, weil du sonst ja vor dem selben Problem stehst, wie jetzt schon und ich weiß nicht, ob die Bots, die auf die Suche nach Adressen gehen, nicht vielleicht auch einfache Erkennungsroutinen haben, um solche Bilder zu entziffern.
 
mmhz vielleicht die auslese routine so ändern

das am ende folgendes entsteht:

name_bitte_entferne_mich(randomzahl)@anbieter.endung


somit bekommen zwar die bots das zu sehen, aber jeder normale user sollte selbstständig merken das er noch was ändern muss an der adresse
 
Original von Chakky
mmhz vielleicht die auslese routine so ändern

das am ende folgendes entsteht:

name_bitte_entferne_mich(randomzahl)@anbieter.endung


somit bekommen zwar die bots das zu sehen, aber jeder normale user sollte selbstständig merken das er noch was ändern muss an der adresse
oder eben netterweise den rauszulöschendenteil rot schreiben.
 
Das wär aber nicht so gut für Leute mit Farbenblindheit, die dann evtl. den schwarzen Text vom roten nicht Unterscheiden können (diese Art der Farbenblindheit ist zwar selten, aber dennoch vorhanden). Ich würde es ähnlich wie slashdot machen:

"foo@example.com" wird bei denen dann z.B. zu "foo[foo]@[exa]example.[bar]com <-- remove everything in []"
 
Ohmann, sind das ma wieder viele Nerd-Tipps hier. Schön zu lesen, aber irgendwie gehen sie etwas an der Praxis vorbei. *g*

JS = Böse... :rolleyes:

Laut inoffiziellen Statistiken und Schätzungen haben im Schnitt mehr als 95% ALLER Internetnutzer JS aktiviert. Bei den komischen Konstruktionen da, dürfte allein die Fehlerquote durch fehlerhaftes Abtippen höher liegen, geschweige denn wieviel DAU's das erst garnicht als Email-Adresse erkennen werden... ^^

Sofern die Plattform also nicht hauptsächlich für Informatiker, Geeks und dergleichen gedacht ist, die alle mit lynx oder deaktiviertem JS vorbeikommen, würd ich die Email-Adressen per JS schützen.

Das ist genauso sicher wie ein Captcha, du musst nur 1-2 kleine Änderungen an dem Code vornehmen und es ist ein einfacher, aber wirksamer Schutz. ;)

//Edit
Du kannst dir ja mal das Email-Cloaking-Plugin von Joomla anschauen. Das hat sich in Joomla bisher bei mir sehr gut bewährt (ist allerdings auch ein JS-Schutz)
Das Plugin liegt jeder Joomla-Installation bei und du findest es normalerweise unter 'plugins/content/emailcloaking.php'.

Grüße Knoxx
 
es klingt mir so, als würdest du irgendwo hart drin rum schreiben wollen.

daher erstmal eine Frage, die zu klären wäre:
Um was für eine "Plattform" handelt es sich denn?
Was komplett selbst geschriebenes? Eine Foren-Software? Ein CMS?

Wenn du genau sagen kannst, was du vor hast / was für Software du dort verwendest, kann man evtl. detailiertere Tipps geben.

Bei fertiger Software solltest du, wenn's geht, nicht zu viel direkt am Code ändern, da du sie sonst nicht ohne größeren Aufwand aktualisieren kannst.
(bzw. nach Update sind alle eigen getätigten Maßnahmen hinfällig...)

Ich z.B. arbeite z.Zt. an der Umgestaltung unserer Fachbereichs-Community und bau diese auf der Forensoftware MyBB auf. Dort gibt es ein wunderbar einfaches und gleichzeitig mächtiges Plugin-System, wo man nur mal ca. 3-4 Tage intensive Einarbeitung braucht und danach dann nichts mehr hart in den Quellcodes rumschreiben muss, sondern alles über selbstgeschriebene Plugins lösen kann.

Vorteil: ich kann die Forensoftware aktuell halten, ohne jedesmal wieder irgendwo basteln zu müssen...
 
Original von beavisbee
Was komplett selbst geschriebenes? Eine Foren-Software? Ein CMS?
Ist komplett selber geschrieben in PHP mit einer mySQL DB im Hintergrund. Diese Plattform ist mehr oder weniger ein Telefonbuch, es stehen also Name und E-Mail-Adresse von momentan ~1000 Leuten drinnen. Es soll möglich sein, dass die User E-Mail Adressen von anderen Leuten sehen. Daher fällt die Version mit Formular, hatte ich auch schon angedacht, leider weg.
Ich kenne die JS von typo3 und Joomla, an etwas in der Art habe ich auch gedacht. Ich vertrete hier die Meinung von Knoxx dass fast alle User JS aktiviert haben und wer es deaktiviert macht das bewusst. Ich habe schon viel mit 'Endkunden' zu tun gehabt und wenn man sich zB bei Usability-Tests die Fragen und Probleme anschaut verzweifelt man so und so leicht und fragt sich wie solche Leute überhaupt durch den Alltag kommen ^^

Eine Möglichkeit die ich mir auch schon überlegt habe wäre die Mail-Adresse mit gdlib bzw. ImageMagick in ein Bild umzuwandeln, aus Usability-Sicht aber auch nur eine suboptimale Lösung da kein Copy&Paste möglich ist.

Edit:
Bei Google finde ich nur Tools wo man eine Adresse eingeben kann und dann mehr oder weniger JS raus kommt ... aber genau diesen Schritt den diese Tools machen würde ich gerne automatisch laufen lassen wenn die Adressen aus der DB abgefragt werden. Dieser Generator soll sehr effektiv sein, nur was wird da mit meiner Adresse gemacht wenn ich auf "Obfuscate" klicke?
 
Grafiken sind nur ein geringer Schutz.... das sieht man ja an den Captchas, die von Bots geknackt werden. Solange der Text in der Grafik leicht lesbar ist, ist er mit Mitteln der digitalen Bildverarbeitung auch leicht wieder ausgelesen...

wie ist das eigentlich aus Datenschutz-rechtlicher Sicht?

Stellt jeder User die Informationen selbst rein und erklärt damit, dass er mit der Veröffentlichung einverstanden ist?
Hat jeder ein eigenes Login, um seine Daten zu ändern?

eine weitere recht einfache Möglichkeit zum Schutz gegen derartige Spider wäre ja z.B. auch, dass man an die Daten nur kommt, wenn man eingeloggt ist.. nur die Registrierung müsste dann so sicher sein, dass Bot-Anmeldungen unterbunden werden. Es gibt jedoch auch recht schwer knackbare Captchas...
 
Warum nicht eine Kombination?

Du erstellst eine leicht verzerrte aber immernoch sehr gut lesbare Grafik der Emailadresse, die als "alt" Attribut eine entsprechende Textadresse hat (z.B. mit [], wie es schon beschrieben wurde) und ersetzt diese Grafik falls Javascript aktiviert ist durch die richtige Emailadresse.

Wobei ich bezweifel, dass Bots bereits Bilder scannen. Das lohnt sich nicht. Da würde es sich wohl eher lohnen, Javascript zu parsen und dort gezielt nach Emails zu suchen.

Aber wie gesagt:

Grafik mit Emailadresse + "alt" Emailadresse als Text wie z.B. "test[st]@[exa]example.org" + Javascript, das das Bild durch test@example.org ersetzt
 
ich würde die adresse serverseitig verschlüsseln und dann per javascript wieder entschlüsseln. ich glaube nicht, dass der standard-mailbot sich die mühe macht javascript zu interpretieren. als verschlüsselung kannst du einfach die buchstaben verschieben (caesar).
in der html seite kannst du dann irgend so etwas machen:
Code:
function decodeAddress(encodedAddress)
{
    var decodedAddress = ""; /* hier kommt dann die entschlüsselte adresse rein */
    
    ... /* hier entschlüsselungscode einsetzen ;) */
    
    return decodedAddress;
}

function printMailLink(encodedAddress)
{
    var decodedAddress = decodeAddress(encodedAddress);
    document.write("<a href=\"mailto:" + decodedAddress + "\">" + decodedAddress + "</a>");
}
im html code kannst du dann an der stelle wo die mail reinsoll diesen code einfügen:
Code:
<script>printMailLink("abcd");</script>
für alle, die javascript deaktiviert haben, kannst du ein
Code:
<noscript>Bitte JavaScript aktivieren um die Mail-Adresse zu sehen</noscript>
einfügen. dann sehen die wenigstens, dass es noch mehr gibt.
was konstrukte wie foo[at]bar.com (und alles was noch komplizierter ist) angeht, schliesse ich mich Knoxx an. eine seite sollte in erster linie benutzerfreundlich sein. benötigt man dafür etwas mehr programmieraufwand, sollte man diesen aufwand auf sich nehmen. stell dir vor, deine grosseltern suchen eine mail adresse und finden nur ein "foo[foo]@[exa]example.[bar]com <-- alles zwischen den [] löschen" vor. ich denke nicht, dass sie das als e-mail adresse erkennen würden. und da gibt es auch sonst genug jüngere leute, die damit mühe haben werden.
 
Entschuldige, dass ich solange nichts von mir hören habe lasse, hatte viel um die Ohren -.-

@mise: So etwas in der Art habe ich mir auch gedacht, nur genau der Teil den ich brauche nämlich das "Wie verschlüssel ich die Adresse?" fehlt in deinem Codeschnipsel. Außerdem würde da doch die E-Mail Adresse erst recht plain im HTML-Quellcode stehen?! var decodedAddress = "foo@bar.org";

Ich habe mir das Skript von Joomla näher angeschaut, wenn ich im BE im Editor eine E-Mail Adresse eingebe wird diese automatisch mit einem JS im FE ausgegeben.
Code:
<script language='JavaScript' type='text/javascript'>
<!--
var prefix = 'ma' + 'il' + 'to'; 
var path = 'hr' + 'ef' + '='; 
var addy65252 = 'foo' + '@';
addy65252 = addy65252 + 'bar' + '.' + 'com'; 
document.write( '<a ' + path + '\'' + prefix + ':' + addy65252 + '\'>' );
document.write( addy65252 );
document.write( '<\/a>' );
 //-->\n </script>

Das Forum wandelt das gleich um, kann ich also leider nicht darstellen -.-

Hier werden die Zeichen der E-Mail Adresse also als HTML-Unicode-Etities ausgegeben. Nur woher kommen die Etities? Da muss es irgendwo noch ein PHP-Skript geben, dass E-Mail Adressen automatisch so umformatiert - und nach genau diesem Teil suche ich!

Das könnte ich dann bei dem Abruf aus der DB ...
PHP:
while ($row = mysql_fetch_array($result)) {

  echo "<tr><td>".$row['E_Mail']." </td></tr>\n";

}
... in den PHP-Code einfügen.

mfg

RemoteC
 
Original von r@mi
Verstehe nicht zu 100% was du meinst. Vielleicht sowas? http://www.happytec.at/download/view.php?id=10
Ja, genau sowas habe ich gesucht 8)

Edit:
So, ich habe das jetzt getestet und es funktioniert wie ich es mir vorgestellt habe. Vielleicht bringt es noch jemanden anderen (und sei es nur über Google) etwas und daher poste ich hier den Code ...
PHP:
//Ausgabe
while ($row = mysql_fetch_array($result)) {
  echo "<br />\n"."<script language='JavaScript' type='text/javascript'><!--\ndocument.write('<a href=mailto:".utf8_decode(encode_string_into_html_entities_new(utf8_encode($row['E_Mail']))).">');document.write('".utf8_decode(encode_string_into_html_entities_new(utf8_encode($row['E_Mail'])))."');document.write('</a>');"."//-->\n </script>"."<br />\n";
}
  echo "<noscript>Bitte JavaScript aktivieren um die E-Mail Adressen zu sehen.<br /> 
Die E-Mail Adressen sind vor Spam geschützt!</noscript>\n";


Nochmals vielen Danke an alle :)
 
Zurück
Oben