Willkommen, Gast ( Anmelden | Registrierung )     [ Hilfe | Mitglieder | Suche ]

 
Reply to this topicStart new topic
> EMail-Adressen Kodieren
mrtt
Beitrag 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 und eine meiner Projektseiten (mit aktiven Mailschutz) genannt:
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
Go to the top of the page
 
+Quote Post
andi
Beitrag 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 :-)


--------------------
Go to the top of the page
 
+Quote Post
saschapi
Beitrag 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. smile.gif

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! wink.gif


--------------------
Go to the top of the page
 
+Quote Post
mrtt
Beitrag 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
Go to the top of the page
 
+Quote Post
mrtt
Beitrag Thu. 28. December 2006, 19:36
Beitrag #5


Advanced Member
****

Gruppe: AdvancedMembers
Beiträge: 111
Mitglied seit: 11.10.2006
Mitglieds-Nr.: 285



ZITAT(andi @ Thu. 28. December 2006, 15:22) *
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
Go to the top of the page
 
+Quote Post
andi
Beitrag 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


--------------------
Go to the top of the page
 
+Quote Post
alexander
Beitrag 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 wink.gif


--------------------
SEFRENGO | a free choice ... again!
Go to the top of the page
 
+Quote Post
MaZderMind
Beitrag 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
Schaut euch mal mein Smartypants-Plugin an. Darin wird der an den Benutzer zu sendende Code vorverarbeitet. An genau dieser Stelle sollte das Plugin ansetzen.
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
Go to the top of the page
 
+Quote Post
mrtt
Beitrag 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 im ende Januar.

Gruß
Sebastian

Der Beitrag wurde von mrtt bearbeitet: Sat. 30. December 2006, 00:03
Go to the top of the page
 
+Quote Post
MaZderMind
Beitrag 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 wink.gif
Mach du mal.. alle nötigen Angaben hast du ja schon.

Gruß, Peter
Go to the top of the page
 
+Quote Post
mrtt
Beitrag Sun. 31. December 2006, 02:18
Beitrag #11


Advanced Member
****

Gruppe: AdvancedMembers
Beiträge: 111
Mitglied seit: 11.10.2006
Mitglieds-Nr.: 285



ZITAT(MaZderMind @ Fri. 29. December 2006, 21:56) *
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
Go to the top of the page
 
+Quote Post
MaZderMind
Beitrag 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
Go to the top of the page
 
+Quote Post
mrtt
Beitrag 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
Go to the top of the page
 
+Quote Post
MaZderMind
Beitrag 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
Go to the top of the page
 
+Quote Post
mrtt
Beitrag 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:Welche Datei muss includiert werden, so dass zugriff auf Systemvariablen besteht (ohne das ein Login fällig wird)? Geht das Überhaupt?
Wenn kein Zugriff ohne Login möglich ist, muss ich mir was überlegen.

Sebastian
Go to the top of the page
 
+Quote Post
MaZderMind
Beitrag 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
Go to the top of the page
 
+Quote Post
mrtt
Beitrag 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! wacko.gif
Manchmal ist man (ich) halt nen bissl dumm.

Sebastian

Der Beitrag wurde von mrtt bearbeitet: Tue. 2. January 2007, 15:47
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 Besucher lesen dieses Thema (Gäste: 2 | Anonyme Besucher: 0)
0 Mitglieder:

 



RSS Vereinfachte Darstellung Aktuelles Datum: 23.4.24 - 12:35

Sefrengo ist ein eingetragenes Markenzeichen und urheberrechtlich geschützt.
Copyright 2009 Design & Daten, Alle Rechte vorbehalten.