EMail-Adressen Kodieren |
Willkommen, Gast ( Anmelden | Registrierung ) [ Hilfe | Mitglieder | Suche ]
EMail-Adressen Kodieren |
Wed. 27. December 2006, 08:23
Beitrag
#1
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 111 Mitglied seit: 11.10.2006 Mitglieds-Nr.: 285 |
Hallo zusammen,
um gegen die immer weiter Ansteigende Spam-Flut was zu unternehmen, bekam ich den Auftrag mir was zu Überlegen. Da die meisten Mail-Spider ASCII-Code nicht zurück in "normale" Zeichen wandeln, sind die Adressen relativ gut geschützt. Deswegen hab mich entschieden die Mail-Adressen auf der Website über den ASCII-Code zu Verschlüsseln. Das Bieten zwar keinen 100% Schutz, dafür können die Links noch in jedem Browser geöffnet werden. Das ganze passiert Serverseitig (ganz) am Ende der /backend/inc/inc.generate_code.php ohne javascript. Vielleicht kann der/die eine oder andere diesen Code noch gebrauchen (Vielleicht fließt er ja sogar in den Kern ein? So unter Administration -> Projekte -> "Projekt 1" -> Mail Protector aktiviert; Naja, Wunschdenken) QUELLTEXT function umwandeln($string) { for ($i = 0; $i < strlen($string); $i++) { $return .= "&#".ord(substr($string,$i,1)). ";"; } return $return; } preg_match_all('![\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}!si', $code, $treffer ); for ($i=0; $i<count($treffer[0]);$i++ ){$code=preg_replace("!".$treffer[0][$i]."!si",umwandeln($treffer[0][$i]),$code);} $code=preg_replace('!mailto:!si', 'mailto:',$code); Zum testen sein folgende Spider http://www.emailgrabber.de/ Sebastian PS: Man verzeih alle Schreibfehler -> Ich geh jetzt schlafen! Der Beitrag wurde von mvsxyz bearbeitet: Tue. 24. June 2014, 21:03 |
|
|
Thu. 28. December 2006, 15:22
Beitrag
#2
|
|
purist Gruppe: AdvancedMembers Beiträge: 1.525 Mitglied seit: 30.06.2006 Wohnort: luzern (schweiz) Mitglieds-Nr.: 16 |
ahhh, das habe ich schon lange gesucht. habe bis jetzt für kontaktseiten immer das modul sourcecode missbraucht.
ich habe die zeilen am schluss angefügt: QUELLTEXT // Editor / Vorschau if ($view == 'preview'){ $out .= "linkset['".$type_container.'_'.$type_number."_side_$type_typenumber']+='<tr><td class=\"menurow\" onclick=\"document.location.href=\'".$sess->url($cfg_client['htmlpath'].$cfg_client['contentfile'].'?lang='.$lang.'&idcat='.$idcat.'&idcatside='.$idcatside.'&view=edit')."\'\" onmouseover=\"on(\'".$mod_lang['side_edit']."\');return true;\" onmouseout=\"off();return true;\"><a href=\"".$sess->url($cfg_client['htmlpath'].$cfg_client['contentfile'].'?lang='.$lang.'&idcat='.$idcat.'&idcatside='.$idcatside.'&view=edit')."\"><font face=\"Verdana, Arial, Helvetica\" size=\"1\">".$mod_lang['side_edit']."</font></a></td></tr>'\n"; } else{ $out .= "linkset['".$type_container.'_'.$type_number."_side_$type_typenumber']+='<tr><td class=\"menurow\" onclick=\"document.location.href=\'".$sess->url($cfg_client['htmlpath'].$cfg_client['contentfile'].'?lang='.$lang.'&idcat='.$idcat.'&idcatside='.$idcatside.'&view=preview')."\'\" onmouseover=\"on(\'".$mod_lang['side_preview']."\');return true;\" onmouseout=\"off();return true;\"><a href=\"".$sess->url($cfg_client['htmlpath'].$cfg_client['contentfile'].'?lang='.$lang.'&idcat='.$idcat.'&idcatside='.$idcatside.'&view=preview')."\"><font face=\"Verdana, Arial, Helvetica\" size=\"1\">".$mod_lang['side_preview']."</font></a></td></tr>'\n"; } $out .= "linkset['".$type_container.'_'.$type_number."_side_$type_typenumber']+='</table></td></tr></table>'\n"; $out .= "</script>"; } return $out; } function umwandeln($string) { for ($i = 0; $i < strlen($string); $i++) { $return .= "&#".ord(substr($string,$i,1)). ";"; } return $return; } preg_match_all('![\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}!si', $code, $treffer ); for ($i=0; $i<count($treffer[0]);$i++ ){$code=preg_replace("!".$treffer[0][$i]."!si",umwandeln($treffer[0][$i]),$code);} $code=preg_replace('!mailto:!si', 'mailto:',$code); ?> ist das korrekt so? wenn ja..irgendwie funktioniert das bei mir nicht :-) -------------------- |
|
|
Thu. 28. December 2006, 15:32
Beitrag
#3
|
|
Advanced Member Gruppe: Moderators Beiträge: 911 Mitglied seit: 26.06.2006 Wohnort: Essen; Ruhrgebiet Mitglieds-Nr.: 4 |
Kann man das nicht sinnvollerweise in die outputmanipulation in den projekteinstellungen packen? Dann braucht man auch nix patchen wenn das system upgedated wird.
Super wäre es, wenn man sich sowas über ein Plugin ähnlich easy integrieren könnte wie bei Wordpress. Also einfach Plugin installieren, dann wird sowas manipuliert, Plugin deinstallieren, dann ist es wieder raus! -------------------- |
|
|
Thu. 28. December 2006, 19:15
Beitrag
#4
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 111 Mitglied seit: 11.10.2006 Mitglieds-Nr.: 285 |
Hallo Sefrengies,
ich habe ein Plugin erstellt, dass unter Plugins geposted wird. Gruß Sebastian |
|
|
Thu. 28. December 2006, 19:36
Beitrag
#5
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 111 Mitglied seit: 11.10.2006 Mitglieds-Nr.: 285 |
ist das korrekt so? wenn ja..irgendwie funktioniert das bei mir nicht :-) Hallo andi, in dem von mir Veröffentlichten Code ist die Variable $code zu finden. Diese enthält den HTML-Quelltext, so wie er zum 'Besucher der Seite übermittelt wird. $code ist nur in der Datei /backend/inc/inc.generate_code.php gültig. Um diesen Code in deinem Modul verwenden zu können, musst du also $code durch die Variable ersetzen, die in deinem Modul den Output/die Ausgabe enthält. (Ich glaube $out müsste es bei dir sein). Ansonsten Verwende einfach das von mir gerade (!!!) Veröffentlichte Plugin. Dieses Kodiert alle Mail-Adressen, nicht nur die, die in deinem Modul Vorkommen. Sebastian |
|
|
Thu. 28. December 2006, 19:49
Beitrag
#6
|
|
purist Gruppe: AdvancedMembers Beiträge: 1.525 Mitglied seit: 30.06.2006 Wohnort: luzern (schweiz) Mitglieds-Nr.: 16 |
danke sebastian
wollte ich vorhin gerade ausprobieren, die plugin-installtion ist aber fehlgeschlagen--->siehe post pluginbeitrag -------------------- |
|
|
Thu. 28. December 2006, 21:01
Beitrag
#7
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 853 Mitglied seit: 16.06.2006 Wohnort: Wien / Österreich Mitglieds-Nr.: 2 |
ich verschiebe das mal nach Entwicklung ist ja kein echter download ... das Plugin gibt es ja jetzt
-------------------- SEFRENGO | a free choice ... again!
|
|
|
Fri. 29. December 2006, 21:56
Beitrag
#8
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 680 Mitglied seit: 09.08.2006 Wohnort: nähe Mainz Mitglieds-Nr.: 182 |
Hi
Sorry das tuts ja.. dache ich hätte was von manipulate_output gelesen *g* Meine Idee für sieht so aus: in der Autostart-Datei (die die Ausgabe nochmals parsen kann) werden im Output alle vorkommnisse von mailto:<emailadresse> per Regex (gibts bei SelfHTML) durch URLs auf eine spezielle Datei im Pluginordner verlinken (also z.B. /backend/plugins/mailsafe/mailsafe.php?ABC123DEF456). Die ID wird beim Scannen zufällig erzeugt und in der DB abgelegt (vorher natürlich checken obs die ID schon gibt). Das mailsafe-Script leitet dann per Location auf mailto:<emauladresse> weiter. Dieses System ist 100%ig Spambot-Sicher und kommt obendrein ohne JS aus. Gruß, Peter |
|
|
Fri. 29. December 2006, 23:57
Beitrag
#9
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 111 Mitglied seit: 11.10.2006 Mitglieds-Nr.: 285 |
Hallo Peter,
find ich eine gute Idee. Setzt du dich dran oder soll ich das machen? Wenn ich das machen soll, wird das wahrscheinlich erst was Gruß Sebastian Der Beitrag wurde von mrtt bearbeitet: Sat. 30. December 2006, 00:03 |
|
|
Sat. 30. December 2006, 14:36
Beitrag
#10
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 680 Mitglied seit: 09.08.2006 Wohnort: nähe Mainz Mitglieds-Nr.: 182 |
ne ich hab null zeit sonst wäre das Plugin schon fertig
Mach du mal.. alle nötigen Angaben hast du ja schon. Gruß, Peter |
|
|
Sun. 31. December 2006, 02:18
Beitrag
#11
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 111 Mitglied seit: 11.10.2006 Mitglieds-Nr.: 285 |
Meine Idee für sieht so aus: in der Autostart-Datei (die die Ausgabe nochmals parsen kann) werden im Output alle vorkommnisse von mailto:<emailadresse> per Regex (gibts bei SelfHTML) durch URLs auf eine spezielle Datei im Pluginordner verlinken (also z.B. /backend/plugins/mailsafe/mailsafe.php?ABC123DEF456). Die ID wird beim Scannen zufällig erzeugt und in der DB abgelegt (vorher natürlich checken obs die ID schon gibt). Das mailsafe-Script leitet dann per Location auf mailto:<emauladresse> weiter. Dieses System ist 100%ig Spambot-Sicher und kommt obendrein ohne JS aus. Gruß, Peter Hi Peter, Bsp. <a href="mailto:irgendwer@irgendwo.tld">irgendwer@irgendwo.tld</a> der "mailto:"-Teil wird entsprechend deines Bsp. ersetzt. Was soll mit dem unterstichenem Teil passieren? Das @ durch [at] oder (at) ersetzten? Denn nur den "mailto:"-Teil zu ändern wird nicht ausreichen. Sebastian |
|
|
Sun. 31. December 2006, 03:43
Beitrag
#12
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 680 Mitglied seit: 09.08.2006 Wohnort: nähe Mainz Mitglieds-Nr.: 182 |
Hmm
Joa wäre ne idee ^^ Gruß, Peter |
|
|
Tue. 2. January 2007, 02:30
Beitrag
#13
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 111 Mitglied seit: 11.10.2006 Mitglieds-Nr.: 285 |
Hi,
ne Frage: wenn ich in der oben genannte /backend/plugins/mailsafe/mailsafe.php systemfunktionen /-klassen (wie $db) aufrufen möchten, welche systemdatei muss ich einbinden? Wenn ich QUELLTEXT require('../../inc/inc.init_external.php'); verwende, wird der benutzer aufgefordert, sich am system anzumelden. Da ich aber auf die Datenbank zugreifen muss, muss ich ja wissen wie die überhaupt heißt und das weiß das System ja. Wenn das Problem beseitigt ist, könnte ich schon fast ne beta Version präsentieren! Sebastian Der Beitrag wurde von mrtt bearbeitet: Tue. 2. January 2007, 02:31 |
|
|
Tue. 2. January 2007, 12:40
Beitrag
#14
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 680 Mitglied seit: 09.08.2006 Wohnort: nähe Mainz Mitglieds-Nr.: 182 |
Hi
Das Problem ist dass diese autostafrts ausgeführt werden /nachdem/ das API bereits entladen ist: QUELLTEXT // Output buffering beenden $sf_factory->unloadAll(); $output = ob_get_contents().$deb -> show(); // eventuelle autostarts ausführen: $a_location = ($is_frontend) ? 'frontend': 'backend'; if (is_array($cfg_cms['autostart'][$a_location])) { foreach($cfg_cms['autostart'][$a_location] as $value) { include_once $cfg_cms['cms_path'] .'plugins/'. $value; } } if (is_array($cfg_client['autostart'][$a_location])) { foreach($cfg_client['autostart'][$a_location] as $value) { include_once $cfg_cms['cms_path'] .'plugins/'. $value; } } Also musst du dir selbst eine nuee Klasse erzeugen: QUELLTEXT $db = &new DB_cms; Und anschließend wieder vernichten: QUELLTEXT unload($db); @bjoern Das sollte eigentlich besser über die Factory und das API laufen, aber ich weiß nicht in wie weit das funktioniert nach dem die Factory bereits alle Klassen eliminiert hat. Könnte man trotzdem noch über sf_factoryGetObject ein DB-Objekt anfordern? Man müsste es anschlißeend auch manuell wieder vernichten ($sf_factory->unload), oder? Wäre es nicht sinnvoll die Factory nach den Autostarts erst zu terminieren? Gruß, Peter |
|
|
Tue. 2. January 2007, 13:45
Beitrag
#15
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 111 Mitglied seit: 11.10.2006 Mitglieds-Nr.: 285 |
Hi,
wie muss denn das Vorgehen sein? Nochmal:
Wenn kein Zugriff ohne Login möglich ist, muss ich mir was überlegen. Sebastian |
|
|
Tue. 2. January 2007, 15:15
Beitrag
#16
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 680 Mitglied seit: 09.08.2006 Wohnort: nähe Mainz Mitglieds-Nr.: 182 |
Sorryi ch hab das Problem falsch verstanden, ich dachte du wolltest in deinem autostartscript an die DB. Die mail.php wird ja quasi im Frontend-Modus aufgerufen wird. Dafür ist IMHO kein externes initiieren vorgesehen.
Mir Fallen ad-hoc drei methoden ein: 1. du initiierst deine Datei genauso wie es die projekt01/index.php macht: CODE // Projektkonfiguration laden include('cms/inc/config.php'); // Session auslesen if (!empty($view)) { $sefrengo = (empty($sefrengo)) ? $_COOKIE['sefrengo'] : $sefrengo; } else { $sefrengo = (empty($sid)) ? $_COOKIE_VARS['sid'] : $sid; } //Load API require_once ($cms_path.'API/inc.apiLoader.php'); // notwendige Dateien includen require_once ($cms_path.'inc/config.php'); require_once ($cms_path.'inc/class.cms_debug.php'); include_once ($cms_path.'external/phplib/prepend.php'); include_once ($cms_path.'inc/class.values_ct.php'); require_once ($cms_path.'inc/fnc.general.php'); include($cms_path.'inc/class.user_perms.php'); // Klassen initialisieren $deb = &new cms_debug; $db = &new DB_cms; $val_ct = &new values_ct(); // Konfigurationsparameter einlesen $cfg_cms_temp = $val_ct -> get_cfg(); $cfg_cms = array_merge($cfg_cms, $cfg_cms_temp); unset($cfg_cms_temp); // Projekt initialisieren if (!is_numeric($client)) $client=$load_client; $idcatside = (int) $idcatside; $idcat = (int) $idcat; // Projekt-Konfigurationsparameter einlesen $cfg_client = $val_ct -> get_by_group('cfg_client', $client); // db_cache initialisieren // change Roland // weil hier erst die $cfg_client und $cfg_cms initialisiert sind $db->init_cache(/*init db_cache with $cfg_client and $cfg_cms*/); // change Roland Du solltest gucken welche Includes und aufrufe du streichen kannst und nur das übernehmen was unbedingt erforderlich ist. 2. Du entwickelst ein Modul dass auf einer Seite eingebunden wird und welches nur den zweck hat diese Weiterleitungen auszulösen -- auch dann wärst du im Frontend. Gefällt mir persönlich aber am wenigsten. 3. du schreibst in dein Autostartscript eine Überprüfung, ob der URL-Parameter mailredirect gesetzt ist. Wenn ja dann kannst du auch deiner Autostart-Datei einen Redirect auslösen: QUELLTEXT ob_end_clean (); $output = ''; header('Location: me@you.de'); Statt auf /backend/plugins/maílprotect/.. zu verweisen kannst du dann ganz einfach auf die frontend-URL verweisen, also z.B. http://meineseite.tld/?mailprotect=ISOURLHTTPSSLDVDJPEG Gruß, Peter |
|
|
Tue. 2. January 2007, 15:41
Beitrag
#17
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 111 Mitglied seit: 11.10.2006 Mitglieds-Nr.: 285 |
Ich dank dir Peter.
Auf die Sache mit dem Autostart hätte ich auch selbst kommen können! Manchmal ist man (ich) halt nen bissl dumm. Sebastian Der Beitrag wurde von mrtt bearbeitet: Tue. 2. January 2007, 15:47 |
|
|
Vereinfachte Darstellung | Aktuelles Datum: 23.4.24 - 12:35 |