Giter VIP home page Giter VIP logo

emailobfuscator's Introduction

Email-Obfuscator: Verschlüsselung von E-Mailadressen zum Schutz vor Spam

Das REDAXO-Addon sorgt dafür, dass alle E-Mailadressen auf deiner Website in verschlüsselter Form ausgegeben werden, so dass sie vor Spam geschützt sind.

Funktionsweise

Durch die Integration des email_obfuscator Addons von RexDude stehen verschiedene Verschleierungsmethoden für E-Mailadressen zur Verfügung:

  1. ROT13 Einhorn-Markup: Diese Methode findet alle E-Mailadressen und ersetzt deren @ durch spezielles Einhorn-Markup: <span class="unicorn"><span>_at_</span></span>. Dadurch kann die E-Mailadresse nicht mehr so einfach von Bots ausgelesen werden und sollte ziemlich gut vor Spam geschützt sein. Weiterhin werden auch alle mailto-Links erkannt und verschlüsselt. Beim Aufruf der Seite werden alle geschützten E-Mailadressen und mailto-Links mittels JavaScript wieder entschlüsselt und in die ursprüngliche Form gebracht. CSS-Styles sorgen dafür, dass die geschützten E-Mailadressen auf der Website richtig angezeigt werden, also mit @ statt Einhorn. Damit fällt der Wechsel von verschlüsselt nach unverschlüsselt nicht auf, und auch in Umgebungen ohne JavaScript wird eine verschlüsselte Adresse richtig dargestellt. Bitte beachten: Diese Methode benötigt für die Einhorn-Markup Methode jQuery für die JavaScript-Funktionalität!

  2. ROT13 JavaScript Verschlüsselung: Um die Email-Adressen zu schützen, wird die E-Mailadresse durch ein JavaScript ersetzt, das die E-Mailadresse ins Dokument schreibt. Zur Verschleierung wird die Technik "ROT13 Encryption" angewendet. Bitte beachten: Diese Methode macht alle E-Mailadresse ohne klickbaren Link klickbar!

  3. CSS Methode ohne JavaScript: Um die Email-Adressen zu schützen, wird die Technik "CSS display:none" angewendet. Bitte beachten: diese Methode entfernt den mailto-Link und verwandelt Adresse in name[at]domain.tld. Die Adresse ist damit nicht mehr klickbar.

  4. ROT13 JavaScript Verschlüsselung mit CSS Methode: Um die Email-Adressen zu schützen, werden die Techniken "CSS display:none" und "ROT13 Encryption" angewendet. Die CSS Methode kommt im <noscript> Tag zum Einsatz, falls JavaScript im Browser des Besuchers deaktiviert ist. Bitte beachten: Diese Methode macht alle E-Mailadresse ohne klickbaren Link klickbar! Bitte beachten: diese Methode entfernt bei deaktiviertem JavaScript den mailto-Link und verwandelt Adresse in name[at]domain.tld. Die Adresse ist damit nicht mehr klickbar.

Installation

Das Addon ist nach Aktivierung gleich funktionsfähig, und du brauchst keine weiteren Einstellungen vorzunehmen. Die benötigten Styles und Scripte werden automatisch geladen.

Solltest du das benötigte CSS oder JavaScript manuell einbinden wollen, musst du in der Konfiguration das automatische Laden deaktivieren.

Hinweise zur ROT13 Einhorn-Markup Methode: CSS und JavaScript manuell einbinden

Du kannst die Styles und Scripte auf zwei Arten einbinden: Entweder du lädst die Files, die das Addon bereitstellt, oder du kopierst deren Inhalte in deine bestehenden CSS- und JavaScript-Files.

a) Dateien laden

CSS im <head> deiner Website einfügen:

<?php
  if (rex_addon::get('emailobfuscator')->isAvailable()) { 
    ?>
    <link rel="stylesheet" type="text/css" href="<?= rex_url::addonAssets('emailobfuscator', 'emailobfuscator.css'); ?>">
    <?php
  }
?>

JavaScript am besten am Ende deiner Website vorm schließenden </body> einfügen:

<?php
  if (rex_addon::get('emailobfuscator')->isAvailable()) {
    ?>
    <script src="<?= rex_url::addonAssets('emailobfuscator', 'emailobfuscator.js'); ?>"></script>
    <?php
  }
?>

b) Inhalte kopieren

Kopiere die Inhalte der CSS-Datei und der JS-Datei jeweils in deine Sourcen:

assets/emailobfuscator.css
assets/emailobfuscator.js

⚠️ Beachte dabei: Sollte eine neue Version des Addons erscheinen, in der das CSS oder JS geändert wurden, musst du diese Änderungen in deinen Sourcen anpassen!
Bei Variante a) oben ist dies nicht notwendig.

Sonstiges

Verschlüsselung bestimmter E-Mailadressen verhindern

<?php
  if (rex_addon::get('emailobfuscator')->isAvailable()) {
    emailobfuscator::whitelistEmail('[email protected]');
  }
?>

Aufpassen bei Formularen und Attributen!

Das Addon filtert alle E-Mailadressen im Code anhand eines Musters und verschlüsselt diese. In manchen Situationen ist das nicht unbedingt gewollt, z. B. wenn E-Mailadressen als HTML-Attribute oder in Formularen verwendet werden. Dort werden vom System natürlich die reinen, unverschlüsselten Adressen erwartet, und leider kann das Addon solche Umgebungen nicht eigenständig erkennen.

⚠️ Beachte bitte, dass du in manchen Umgebungen die E-Mailverschlüsselung unterbinden solltest, entweder durch Ausschließen bestimmter Templates oder Artikel in der Konfiguration, oder aber durch ein manuelles Whitelisting von Adressen wie im Abschnitt oben beschrieben.

emailobfuscator's People

Contributors

alxndr-w avatar interweave-media avatar jelleschutter avatar nandes2062 avatar phoebusryan avatar schuer avatar tobiaskrais avatar ytraduko-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

ytraduko-bot

emailobfuscator's Issues

decryptUnicorn is not defined

Beim Klick auf einen E-Mail-Link passiert nichts. In der Konsole steht der Fehler: "decryptUnicorn is not defined" Windows 8.1 Chrome, Firefox und IE 11. Nicht eingeloggt im Backend. Keine Templates oder Kategorien ausgeschlossen.

Hotfix-Release veröffentlichen

Folgende Schritte müssten erledigt werden:

  1. Version in der package.yml auf 2.1.6 erhöhen Erledigt
  2. Einen Git-Tag für 2.1.6 setzen
  3. Bei GitHub ein neues Release 2.1.6 anlegen und den Bugfix #32 erwähnen mit Dankeschön an @jelleschutter.
  4. Das Paket im REDAXO-Installer veröffentlichen. Zugangsdaten, falls nicht bekannt, können im Slack von anderen FOR-Mitgliedern erfragt werden.

🙌

In der Datei class.emailobfuscator.php, Fehlen die Anführungszeichen!

In der Datei
class.emailobfuscator.php
Fehlen in der Zeile 158 die Anführungszeichen um unicorn.

Falsch:
return $matches[1] . '<span class=unicorn><span>_at_</span></span>' . $matches[2];

Richtig wäre:
return $matches[1] . '<span class="unicorn"><span>_at_</span></span>' . $matches[2];

Gruss Heinz

Bitte neues Release veröffentlichen

Der emailobfuscator ist zur Zeit nicht nutzbar und muss manuell auf allen Installationen gepatcht werden obwohl die Version im Git funktioniert. Bitte ein Bugfix Release veröffentlichen.

Option nur für mailto

Würde das Problem lösen, dass E-Mail-Adressen an ungewollter Stelle ersetzt werden.
Im Normalfall werden E-Mail-Adressen immer mit einem Mailto-Link veröffentlicht.

Href nicht vollständig wenn ein "|" darin ist

Wenn im href-Tag ein "|" vorkommt, z. B. wenn in einem Subject-Attribute:
mailto:?subject=Dieser Teil wird angezeigt. | Dieser Teil wird nicht angezeigt.

Im Frontend wird dann nur noch folgendes angezeigt:
mailto:?subject=Dieser Teil wird angezeigt.

jQuery Abhängigkeit entfernen?

In vielen Projekten nutze ich kein jQuery mehr und müsste es nur wegen des AddOns einsetzen.

Den JS-Code vom emailobfuscator könnte man auch ohne jQuery Abhängigkeiten umsetzen:

var email_links = document.querySelectorAll('[href^="javascript:decryptUnicorn"]');

Array.prototype.forEach.call(email_links, function(email_link, index, array) {

    var email = email_link.href.match(/\((.*)\)/)[1];

    email = email
        // ROT13-Transformation
        .replace(/[a-z]/gi, function (s) {
            return String.fromCharCode(s.charCodeAt(0) + (s.toLowerCase() < 'n' ? 13 : -13));
        })
        // Ersetze # durch @
        .replace(/\|/g, '@');

        // Ersetze Einhörner
        email_link.href = 'mailto:'+email;

});

Addon-Name: `rex_`-Prefix entfernen

Der Konsens bei FOR ist, keine Prefixe zu verwenden. Bei einem bereits veröffentlichten Addon ist der Wechsel allerdings mit etwas Aufwand verbunden:

  1. Prüfen, ob der neue Addon-Key verfügbar ist
  2. Addon mit neuem Key bei MyREDAXO anlegen
  3. Repo umbenennen
  4. Alte Bezeichnung im gesamten Addon auf neue wechseln
  5. Neues Major-Release veröffentlichen mit Hinweis auf neuen Namen
  6. Ggfls Hinweis im Forum hinterlassen, denn Nutzer des alten Addons kriegen im Installer keinen Hinweis auf Updates mehr

Wunschliste: Kategorie ausschließen

Ich fände es praktisch, wenn man Kategorien, oder besser noch Templates, ausschließen könnte, wenn z.B. der entsprechende Artikel als Newsletter verschickt wird.
lg

Whitelist Email in der Konfiguration ergänzen

Aktuell gibt es die Funktion rex_emailobfuscator::whitelistEmail();. Wenn wir sowieso schon Artikel und Templates auf der Konfigurationsseite im Backend whitelisten können, wäre es vielleicht sinnvoll, auch die E-Mailadressen dort zu ergänzen, damit es einheitlich bleibt?

boot.php - automatisches Einbinden v. css/js ist vertauscht

M.E. fehlt in der boot.php in den Zeilen 28 u. 34 jeweils ein "!".
Anstatt
if ($this->getConfig('autoload_css')) {
müsste es in Zeile 28 heissen:
if (!$this->getConfig('autoload_css')) {
und in Zeile 34 dementsprechend
if (!$this->getConfig('autoload_js')) {

Ansonsten ist das automatische Einbinden der Resourcen genau vertauscht, d.h. wenn keine Häkchen gesetzt sind, werden sie automatisch eingebunden und wenn welche gesetzt sind, werden sie nicht eingebunden.

Assets (CSS, JS) automatisch laden [optional]

Styles und Scripts müssen zur Zeit noch manuell ins Template eingebracht werden. Ich fände es klasse, wenn das Addon sich automatisch darum kümmern könnte. Damit müsste das Addon nur installiert werden, und die Verschlüsselung würde sofort auf der Website greifen.

Allerdings sollte es eine Möglichkeit geben, das automatische Laden der Assets zu unterbinden, für den Fall, dass sie in bestehende Ressourcen gemerget werden sollen(, was natürlich performanter und schöner ist).

Anpassungen:

  • 2 Checkboxen (CSS und JS) auf der Settings-Page im Backend, per default aktiviert
  • Autoload CSS per rex_view::addCssFile
  • Autoload JS per rex_view::addJsFile ist leider problematisch, weil jQuery benötigt wird. Deshalb entweder prüfen, ob jQuery bereits hinzugefügt wurde oder aber das Addon JS unmittelbar vorm schließenden </body> einfügen.
  • Hinweis auf Autoload in der README ergänzen
  • Hinweis auf jQuery in der README ergänzen

Warnung wenn kein Artikel in Konfiguration ausgeschlossen wird

Redaxo 5.2
E-Mailverschlüsselung: 1.3.0

Wenn kein Artikel in Konfiguration ausgeschlossen wird erfolgt folgender Fehler:
Warning: in_array() expects parameter 2 to be array, string given in /redaxo/src/addons/rex_emailobfuscator/boot.php on line 13

CSS: Unicorn-Styles robuster machen

Das Unicorn kommt aktuell als <span class="unicorn">_at_</span>, mittels CSS kommt ein @ davor und die Breite wird auf 1em beschnitten. Das ist nicht sonderlich robust, denn je nach Font ist ein @-Zeichen nicht immer 1em breit, und dann sieht man Artefakte des nachfolgenden _at_.

Ich schlage vor, das Unicorn auf <span class="unicorn"><span>_at_</span></span> anzupassen, dann kann das innere _at_ sehr einfach komplett ausgeblendet werden, und es ist kein zusätzliches Styling mehr notwendig.

Addon wirft Warnungen

Warning: in_array() expects parameter 2 to be array, null given in /blubb/redaxo/src/addons/rex_emailobfuscator/boot.php on line 8

Fehler bei clean install

"ErrorException" thrown in /var/www/dev2/redaxo/src/addons/emailobfuscator/boot.php on line 16
Fatal error: Call to a member function getTemplateId() on a non-object

Wenn nagelneues REDAXO (ohne Startartikel ausgewählt)

Möglicher Fix line 16:
if ( !is_null(rex_article::getCurrent()) && ...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.