heiko-barth.de

// DokuWiki: Verschlüsselte E-Mails senden

Mit dem Bureaucracy Plugin kann man ohne viel Aufwand ein Kontaktformular erstellen, dass die Daten anschließend per E-Mail versendet. Dies passiert im Klartext. Es gibt allerdings genügend Gründe E-Mails zu verschlüsseln.

Mit dem folgendem Quick-and-Dirty Hack, werden die Daten vor dem Senden mit einem fest hinterlegten öffentlichen GPG-Schlüssel des Empfängers verschlüsselt. Benötigt wird hierfür die OpenPGP Java-Script Implementierung von Herbert Hanewinkel. Ich habe in diesem Beispiel die 5 Java-Script Dateien im Verzeichnis /js auf meinem Webspace hinterlegt.

Auf einer DokuWiki-Seite folgendes einfügen:

<form>
fieldset "E-Mail"
textbox  "Name:"
email "E-Mail:" !
textbox "Betreff:" !
textarea "Text:"

Action mail foo@localhost
submit "E-Mail senden"
Thanks "Vielen Dank für ihre Nachricht."
</form>

Bei installiertem Bureaucracy Plugin erzeugt obiger DokuWiki-Code eine HTML-Form mit 4 Textfeldern (Name, E-Mail, Betreff und Text). Der Inhalt wird nach dem Klicken auf „E-Mail senden“ an foo@localhost geschickt.

Nun kommt der spannende Teil. Damit der Hack allerdings funktioniert, muss der Einsatz von HTML in den DokuWiki Einstellungen erlaubt sein.

Folgendes ebenfalls in die DokuWiki-Seite einfügen:

<html>
<script src="/js/rsa.js" type="text/javascript"></script>
<script src="/js/aes-enc.js" type="text/javascript"></script>
<script src="/js/base64.js" type="text/javascript"></script>
<script src="/js/mouse.js" type="text/javascript"></script>
<script src="/js/PGencode.js" type="text/javascript"></script>
 
<script type="text/javascript">
/* <![CDATA[ */
	function encText() {	
		var pubKey = "hier den öffentlichen Schlüssel hinterlegen";
		var keyTyp = 1; // RSA = 0; Elgamal = 1
		var keyID = "hier die KeyID hinterlegen";
 
		var text = document.getElementsByName("bureaucracy[4]");
		var name = document.getElementsByName("bureaucracy[1]");
		var mail = document.getElementsByName("bureaucracy[2]");
		var subject = document.getElementsByName("bureaucracy[3]");
 
		if ((text[0].value) && (name[0].value)) {
			alert("Ihre Nachricht wird nun verschlüsselt und anschließend gesendet.");
			text[0].value = doEncrypt(keyID, keyTyp, pubKey, "Name: " + name[0].value + "\nE-Mail: " + mail[0].value + "\nBetreff: " + subject[0].value + "\n\n" + text[0].value);
			name[0].value = "Ihre Nachricht wurde verschlüsselt";
			mail[0].value = "";
			subject[0].value = "";
		}
	}
 
	function encInit() {
		if (document.getElementById("bureaucracy__plugin1")) {
			document.getElementById("bureaucracy__plugin1").onsubmit = encText;
		}
	}
 
	addInitEvent(encInit);
/* ]]> */
</script>
</html>

Diese drei Java-Script Variablen müssen vor der Benutzung noch angepasst werden:

  • pubKey 1)
  • KeyTyp
  • keyID

Am einfachsten ist es, seinen öffentlichen Schlüssel hier zu posten und die Werte dann zu übernehmen. Wenn jemand alternativ dazu die passenden GPG-Kommandos kennt, würde ich mich SEHR freuen, diese hier als Kommentar zu lesen. Ich habe dazu leider nichts bei meiner Recherche gefunden.

Wenn alles geklappt hat, werden nun alle Textfelder vor dem Abschicken verschlüsselt 8-)

1)
MPIs in base64

Leave a comment…



   ____  ____   _      __   ____   ___   _____     __
  / __/ / __ \ | | /| / /  / __/  / _ \ / ___/ __ / /
 / _/  / /_/ / | |/ |/ /  / _/   / ___// (_ / / // / 
/_/    \___\_\ |__/|__/  /___/  /_/    \___/  \___/
  • E-Mail address will not be published.
  • Formatting:
    //italic//  __underlined__
    **bold**  ''preformatted''
  • Links:
    [[http://example.com]]
    [[http://example.com|Link Text]]
  • Quotation:
    > This is a quote. Don't forget the space in front of the text: "> "
  • Code:
    <code>This is unspecific source code</code>
    <code [lang]>This is specifc [lang] code</code>
    <code php><?php echo 'example'; ?></code>
    Available: html, css, javascript, bash, cpp, …
  • Lists:
    Indent your text by two spaces and use a * for
    each unordered list item or a - for ordered ones.
Web 2.0



RSS   RSS abonieren

Github   Github
QR Code