Schrift
[thread]574[/thread]

GPG-Signatur in Webmailer?



<< >> 9 Einträge, 1 Seite
nikster
 2005-09-17 05:44
#5616 #5616
User since
2004-05-19
12 Artikel
BenutzerIn
[default_avatar]
Hallo Leute.
Ich habe ein Webmailformular gebaut mit dem ich von meinem Mailserver aus Mails verschicken kann (ich konnte mal von einem Hotel aus nicht ueber den Proxy raus... andere Geschichte)
Jetzt wuerde ich von diesem Formular aus gerne meine GPG Signatur mit einbinden.
Da ich als User auf dem Mailserver ja existiere und mir auch meinen Keyring in .gnupg ablegen kann ist der Key ja quasi schon da...
Ich habe aber noch keinen Schimmer wie ich ihn einbinden kann

Hier mal das Script das ich benutze:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/perl
use strict;

my $mailprog = '/usr/lib/sendmail -oi -t';

# Absenderadresse der Mail
my $From = 'bla@bla.de.example';

# URL der Homepage. Formulare werden mit
# <FORM METHOD=POST ACTION="$homeurl$script_url"> angesprochen.
my $homeurl = 'http://fasel.bla.de';

# Maildomain: der '@' und alles, was dahinter kommt
my $Maildomain = 'bla.de';

my %FORM = ();
my @pairs;
my $buffer = '';
my $recipient = 'bla@bla.de';
my $comments = '';
my $sender = '';
my $script_url = $ENV{'SCRIPT_NAME'};

# Dokumenten-Kopf
print "Content-type: text/html\n\n";
print qq~
 <Html>
 <Head>
 <Title>E-Mail-Formular</Title>
 </Head>
 <Body>
 ~;

# Get the input
if ($ENV{'REQUEST_METHOD'} eq 'GET') {@pairs = split(/&/, $ENV{'QUERY_STRING'});}
elsif ($ENV{'REQUEST_METHOD'} eq 'POST')
 {
 read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
 @pairs = split(/&/, $buffer);
 }
foreach my $pair (@pairs)
 {
 my ($name, $value) = split(/=/, $pair);
 $value =~ tr/+/ /;
 $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
 $FORM{$name} = $value;
 }
#$recipient = $FORM{'recipient'} if (defined($FORM{'recipient'}));
$comments = $FORM{'comments'} if (defined($FORM{'comments'}));
#$sender = $FORM{'username'} .' (' . $FORM{'realname'} . ')';

# Wenn kein Empfaenger angegeben, falscher Aufruf
if ($recipient eq '')
 {
 print qq~
 <H2>Fehler</H2>
 Kein Empf&auml;nger angegeben.
 </BODY>
 </HTML>
 ~;
 }
# Falls die Antwort leer ist, Formular ausgeben
elsif ($comments eq '')
 {
 print qq~
 <H2>E-Mail-Nachricht versenden</H2>
 
 <P>
 <FORM method=POST action="$homeurl$script_url">
Hier bitte Ihren Text eingeben:<BR>
 <TEXTAREA NAME="comments" ROWS=20 COLS=60>
 </TEXTAREA>
 <P>
 <INPUT TYPE="hidden" Name="recipient" VALUE="$recipient">
 <INPUT TYPE="submit" VALUE="E-Mail versenden">
 <INPUT TYPE="reset" VALUE="Eingabe l&ouml;schen"><p>
 </FORM>
 </BODY>
 </HTML>
 ~;
 }
else
 {
 print qq~
 <H2>Mail wurde verschickt</H2>
 <P>
 <a href="javascript:history.back()">Zur&uuml;ck<P>
 </Body>
 </Html>
 ~;

 # Jetzt E-Mail an $recipient senden, erst Adresse basteln
 $recipient = $recipient . '@' . $Maildomain;
 open (MAIL, "|$mailprog") || die "Can't open $mailprog!\n";
 print MAIL "From: $From\n";
 print MAIL "To: $recipient\n";
 print MAIL "Subject: $subject\n";
 print MAIL "Mime-Version: 1.0\n";
 print MAIL "Content-Type: text/plain; charset=iso-8859-1\n";
 print MAIL "Content-Transfer-Encoding: 8bit\n";
 print MAIL "Reply-to: $sender\n";
 print MAIL "\n";
 print MAIL "$sender schrieb:\n\n";
 print MAIL "$comments";
 close (MAIL);
 }


Ich bin fuer jeden Hinweis der mich evtl. auf die richtige Spur fuehrt dankbar.

Gruss

Niels

edit pq: code-tags hinzugefügt
beispiel-emails: RFC 2606\n\n

<!--EDIT|pq|1126959869-->
GwenDragon
 2005-09-17 13:25
#5617 #5617
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
pq
 2005-09-17 16:25
#5618 #5618
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Wiki:Wie frage ich...?
punkt 4 und 8 im speziellen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
esskar
 2005-09-17 21:15
#5619 #5619
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
vom Sicherheitsstandpunkt aus: gar nicht.
Bzw. nur mit einem clientseitigen Tool (z.B. Java-applet), dass die Daten auf dem Client signiert und dann an den Server schickt.
nikster
 2005-09-18 00:39
#5620 #5620
User since
2004-05-19
12 Artikel
BenutzerIn
[default_avatar]
Danke GwenDragon, ich wuehle mich grad durch!

Danke fuer die Hinweise pq.

@esskar: Du hast natuerlich Recht aber ich brauch das halt so...

Danke euch.

Niels
esskar
 2005-09-18 06:10
#5621 #5621
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
wenn ich mit dir via pgp signatur kommunizieren würde, und ich wüsste, dass du deinen private-key so ungeschützt ablegst und einsetzt, würde ich keiner deiner Nachrichten mehr vertrauen.
Punkt. Komma, Strich - !
nikster
 2005-09-18 11:48
#5622 #5622
User since
2004-05-19
12 Artikel
BenutzerIn
[default_avatar]
Also der Key ist nicht ungeschuetzt nur weil er auf einem Server liegt.
Man kann Server durchaus absichern.
[E|B]
 2005-09-18 12:47
#5623 #5623
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ob das hundert prozentig hilft wage ich zu bezweifeln...
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
esskar
 2005-09-18 14:29
#5624 #5624
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
klar, es ist durch ein passwort geschützt.

* jmd könnte die private key datei stehlen, und wie brute-force dein passwort knacken
* damit du signieren kannst, musst du über den browser dein passwort über den browser schicken... ssl?
* egal ob ssl oder nicht, kann dein passwort in der Mitte rausgefischt werden (z.B. viele webserver, speichern den eingehenden post in einer temp-datei)
* das script könnte ausgetauscht werden; dadurch weiß man nicht mehr, ob es wirklich das ist was man will, was man unterschreibt...
* ...
* ...
<< >> 9 Einträge, 1 Seite



View all threads created 2005-09-17 05:44.