register_globals off - Anfängerproblem

Hallo!

Vorweg: Ich bin nicht mal php-Anfänger, denn das würde suggerieren,
dass ich jemals etwas damit gemacht hätte.

Ich programmiere in Visual Basic und brauchte jetzt ein winziges
Stückchen php-Code, damit mir Kunden aus meinen Proggis heraus
Bestellungen zusenden können.

Das habe ich gefunden:

<?php
mail($emp, $betr, $msg,
"From: $abs \nReply-To: $mail\nX-Mailer: PHP/" . phpversion());
echo "eMail wurde versandt";
?>

Es funktioniert allerdings nicht auf meiner Strato-Homepage, da Strato
"register_globals off" eingestellt hat. Das ist hier (http://strato-
faq.de/view.php4?articleid=3D669&subcatid=3D2.0.2.20) auch wunderschön
erklärt, aber ich habe mangels Grundwissen keine Chance das
umzusetzen, auch wenn es wahrscheinlich simpel ist.

Kann einer einem php-DAU erklären, was man genau tun muss, damit das
funzt? Wäre super....

Vielen Dank schon mal!!

Gruß

Lars
lars [ Mi, 15 August 2007 14:36 ] [ ID #1796271 ]

Re: register_globals off - Anfängerproblem

Lars schrieb:
> Hallo!
>
> Vorweg: Ich bin nicht mal php-Anfänger, denn das würde suggerieren,
> dass ich jemals etwas damit gemacht hätte.
>
> Ich programmiere in Visual Basic und brauchte jetzt ein winziges
> Stückchen php-Code, damit mir Kunden aus meinen Proggis heraus
> Bestellungen zusenden können.
>
> Das habe ich gefunden:
>
> <?php
> mail($emp, $betr, $msg,
> "From: $abs \nReply-To: $mail\nX-Mailer: PHP/" . phpversion());
> echo "eMail wurde versandt";
> ?>
>
> Es funktioniert allerdings nicht auf meiner Strato-Homepage, da Strato
> "register_globals off" eingestellt hat. Das ist hier (http://strato-
> faq.de/view.php4?articleid=669&subcatid=2.0.2.20) auch wunderschön
> erklärt, aber ich habe mangels Grundwissen keine Chance das
> umzusetzen, auch wenn es wahrscheinlich simpel ist.
>
> Kann einer einem php-DAU erklären, was man genau tun muss, damit das
> funzt? Wäre super....

Wenn die Variablen ueber die URL kommen dann findest du sie in $_GET und
wenn es ein POST Formular war dann in $_POST. Soll beides moeglich sein
dann kann du in $_REQUEST nachgucken.

Anstelle von $emp also $_REQUEST['emp'] usw.

Dazu
11.20. Warum funktionieren meine Formulare nicht?
http://www.php-faq.de/q/q-formular-register-globals.html

und
http://de3.php.net/manual/en/security.globals.php

ACHTUNG:
Die direkte Verarbeitung von Variablen *OHNE* überpruefung öffnet Tür
und Tor fuer XSS und SQL- Injection. In deinem Falle wird deine Seite
zum Spamen misbraucht, weil ueber den Wert von $abs weitere BCC Header
eingefuegt werden koennen.

Gruss
Joerg

--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
Joerg Behrens [ Mi, 15 August 2007 15:07 ] [ ID #1796274 ]

Re: register_globals off - Anfängerproblem

Lars wrote:

> Vorweg: Ich bin nicht mal php-Anfänger, denn das würde suggerieren,
> dass ich jemals etwas damit gemacht hätte.
>
> Ich programmiere in Visual Basic und brauchte jetzt ein winziges
> Stückchen php-Code, damit mir Kunden aus meinen Proggis heraus
> Bestellungen zusenden können.

Dann lass das von einem Programmieren|Erklären den Du Geld dafür gibst.
Schließlich verscheckst Du ja auch nix an Deine Kunden und kassierst dafür.

> Das habe ich gefunden:
>
> <?php
> mail($emp, $betr, $msg,
> "From: $abs \nReply-To: $mail\nX-Mailer: PHP/" . phpversion());
> echo "eMail wurde versandt";
> ?>
>
> Es funktioniert allerdings nicht auf meiner Strato-Homepage, da Strato
> "register_globals off" eingestellt hat. Das ist hier (http://strato-
> faq.de/view.php4?articleid=669&subcatid=2.0.2.20) auch wunderschön
> erklärt, aber ich habe mangels Grundwissen keine Chance das
> umzusetzen, auch wenn es wahrscheinlich simpel ist.

Wie wärs wenn Du zum Thema einfach ins PHP-Manual schaust?
http://php.net/register_globals

--
_,
_(_p> Ulf [Kado] Kadner
\<_)
^^
Ulf Kadner [ Mi, 15 August 2007 15:08 ] [ ID #1796275 ]

Re: register_globals off - Anfängerproblem

> Wenn die Variablen ueber die URL kommen dann findest du sie in $_GET und
> wenn es ein POST Formular war dann in $_POST. Soll beides moeglich sein
> dann kann du in $_REQUEST nachgucken.
>
> Anstelle von $emp also $_REQUEST['emp'] usw.

Vielen Dank für Deinen Tipp, Joerg!!

Die Variablen-Inhalte werden von meinem Programm gesendet. Also habe
ich das jetzt folgendermaßen geändert :

<?php
mail($_GET['emp'], $_GET['betr'], $_GET['msg'],
"From: $_GET['abs'] \nReply-To: $_GET['mail']\nX-Mailer: PHP/" .
phpversion());
echo "eMail wurde versand";
?>

Es funktioniert allerdings nicht (auch nicht mit REQUEST).

Wenn ich die php-Datei im Browser aufrufe, kommt: "Parse error: syntax
error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or
T_VARIABLE or T_NUM_STRING in /mnt/web3/32/98/51526098/htdocs/
email.php on line 3"

Was kann damit gemeint sein?

Gruß

Lars
lars [ Mi, 15 August 2007 16:23 ] [ ID #1796278 ]

Re: register_globals off - Anfängerproblem

Lars "irgendwer" schrieb:

> Ich programmiere in Visual Basic und brauchte jetzt ein winziges
> Stückchen php-Code, damit mir Kunden aus meinen Proggis heraus
> Bestellungen zusenden können.
>
> Das habe ich gefunden:
>
> <?php
> mail($emp, $betr, $msg,
> "From: $abs \nReply-To: $mail\nX-Mailer: PHP/" . phpversion());
> echo "eMail wurde versandt";
> ?>

Hmm, damit ich das richtig verstehe:
Da ist also eine VB-Anwendung. Ein Desktop-Programm, oder läuft die
auch als Webapplikation?
Wenn ersteres: Dann bringst Du da einen Link, o.ä. unter der
dieses Mailscript auf Deiner Homepage aufruft und Dir so eine
Mail schickt? Örgs ;-) Wie wäre es, Deinem Programm selber eine
entspr. SMTP-Fähigkeit einzuverleiben. Da gibt's doch - IIRC, lang
ist's her - einfache Controls, Klassen, oder wie das jetzt heißt, für VB.

> Es funktioniert allerdings nicht auf meiner Strato-Homepage, da Strato
> "register_globals off" eingestellt hat. Das ist hier (http://strato-
> faq.de/view.php4?articleid=669&subcatid=2.0.2.20) auch wunderschön
> erklärt, aber ich habe mangels Grundwissen keine Chance das
> umzusetzen, auch wenn es wahrscheinlich simpel ist.

Eigentlich finde ich das dort sehr anschaulich erklärt. Nun gut ...

http://example.org/script.php?foo=bar
Bei "register globals on" wird damit in script.php die Variable
$foo gesetzt und erhält den Wert "bar".
Bei "register globals off" ist das nicht der Fall. Variablen die
per GET kommen landen im Array $_GET, per POST in $_POST, usw.
Für dieses Beispiel würde man also auf $_GET['foo'] zurückgreifen,
anstelle von $foo.
Das kann die Sicherheit erhöhen, eben weil jemand von aussen nicht
einfach Scipt interne Variablen überschreiben kann, indem er das
Script mit entspr. Parametern aufruft.
Nichtsdestotrotz muß alles was von aussen kommt immer gründlich validiert
werden. So würde Dein Script beispielsweise Deinem Server ganz schnell
in eine SPAM-Schleuder verwandeln, ob mit oder ohne register globals.

Wie geht das? Ganz einfach, ich rufe Dein Script einfach mit entsprechenden
Absender- und Empfängeradressen, sowie Betreff und Text auf. Es läßt ja
alles ohne Prüfung zu.

> Kann einer einem php-DAU erklären, was man genau tun muss,

PHP-Dau? OK. Aber als Programmierer solltest Du doch in Lage sein,
das PHP-Manual zu finden. meinjanur


Gruß
JPM
dev-null-use-reply-ad [ Mi, 15 August 2007 16:25 ] [ ID #1796279 ]

Re: register_globals off - Anfängerproblem

Lars "irgendwer" schrieb:

> <?php
> mail($_GET['emp'], $_GET['betr'], $_GET['msg'],
> "From: $_GET['abs'] \nReply-To: $_GET['mail']\nX-Mailer: PHP/" .
> phpversion());
> echo "eMail wurde versand";
> ?>
>
> Es funktioniert allerdings nicht (auch nicht mit REQUEST).

Der String "From: $_GET['abs'] \nReply-To: $_GET['mail']\nX-Mailer: PHP/"
ist fehlerhaft. Guggst Du Handbuch:
http://de.php.net/manual/de/language.types.string.php


BTW: Sagst Du uns bescheid, wenn Strato Dir den Webspace dicht
gemacht hat?


Gruß
JPM
dev-null-use-reply-ad [ Mi, 15 August 2007 16:31 ] [ ID #1796280 ]

Re: register_globals off - Anfängerproblem

Lars meinte:
>> Wenn die Variablen ueber die URL kommen dann findest du sie in $_GET und
>> wenn es ein POST Formular war dann in $_POST. Soll beides moeglich sein
>> dann kann du in $_REQUEST nachgucken.
>>
>> Anstelle von $emp also $_REQUEST['emp'] usw.
>
> Vielen Dank für Deinen Tipp, Joerg!!
>
> Die Variablen-Inhalte werden von meinem Programm gesendet. Also habe
> ich das jetzt folgendermaßen geändert :
>
> <?php
> mail($_GET['emp'], $_GET['betr'], $_GET['msg'],
> "From: $_GET['abs'] \nReply-To: $_GET['mail']\nX-Mailer: PHP/" .
> phpversion());
> echo "eMail wurde versand";
> ?>
>
> Es funktioniert allerdings nicht (auch nicht mit REQUEST).
>
> Wenn ich die php-Datei im Browser aufrufe, kommt: "Parse error: syntax
> error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or
> T_VARIABLE or T_NUM_STRING in /mnt/web3/32/98/51526098/htdocs/
> email.php on line 3"
>
> Was kann damit gemeint sein?

Die Interpolation [1] versagt. Also: "From: {$_GET['abs'} \n..."

Gregor

[1]
http://at2.php.net/manual/en/language.types.string.php




--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum
Gregor Kofler [ Mi, 15 August 2007 16:38 ] [ ID #1796282 ]

Re: register_globals off - Anfängerproblem

Lars wrote:

Hallo,

> Die Variablen-Inhalte werden von meinem Programm gesendet. Also habe
> ich das jetzt folgendermaßen geändert :
>
> <?php
> mail($_GET['emp'], $_GET['betr'], $_GET['msg'],
> "From: $_GET['abs'] \nReply-To: $_GET['mail']\nX-Mailer: PHP/" .
> phpversion());
> echo "eMail wurde versand";

"From: {$_GET['abs']} \nReply-To: {$_GET['mail']}\nX-Mailer: PHP/n"


BTW Falls Du selbst keine Zeit hast Dich intensiver mit PHP zu
befassen, ist es _sehr_ empfehlendswert Dir das von jemanden
anderen schreiben zu lassen. Speziell der E-Mail-Versand von
PHP mit mail() sieht zwar einfach aus, ist es aber nicht. Neben
schwerwiegenden Sicherheitsproblemen dürfte obiges
z.B. ohne Berücksichtigung von MIME Probleme mit Umlauten
bereiten. 15.6. stellt das Prinzip dar, das auch für text/plain gilt=
..

Wobei aus Deiner Beschreibung nicht so recht hervorgeht,
was wie ans Skript übergeben wird, wo her das kommt und wie
gefährlich das daher sein könnte.

15.6. Wie kann ich eine HTML-Mail versenden?
http://www.php-faq.de/q/q-mail-html.html

11.4. Sollte ich besser GET oder POST verwenden?
http://www.php-faq.de/q/q-formular-methode.html

11.18. Wie erkenne ich fehlerhafte/fehlende Eingaben?
http://www.php-faq.de/q/q-formular-verarbeitung.html

12.1. Wie unterscheide ich böse Variablen von guten?
http://www.php-faq.de/q/q-security-variablen.html


tschuess
[|8:) http://www.sven-drieling.de/
Sven Drieling [ Mi, 15 August 2007 17:31 ] [ ID #1796283 ]

Re: register_globals off - Anfängerproblem

Am 15.08.2007, 16:38 Uhr, schrieb Gregor Kofler <usenet [at] gregorkofler.at>:

> Die Interpolation [1] versagt. Also: "From: {$_GET['abs'} \n..."
^^
Da fehlt ein ]: {$_GET['abs']}

Gruß
Chris
Chris Kraft [ Mi, 15 August 2007 21:59 ] [ ID #1796286 ]

Re: register_globals off - Anfängerproblem

Hallo!

Erstmal vielen Dank an alle, die mir geholfen haben!!

Es funzt jetzt :-)), ich könnte mich jetzt an die Decke freuen, aber
jetzt muss ich wohl irgendwie versuchen einzuschätzen, wie groß das
Sicherheitsproblem ist.

Zum einen ist da der Tipp auf einer recht angesehenen Webseite (hier
habe ich den Code her, es wird jedoch kein Wort über
Sicherheitsprobleme verloren)
http://www.vbarchiv.net/archiv/tipp_details.php?pid=3D953

Zum anderen gibt es hier die vielen Warnungen.

Wenn ich das Problem richtig verstanden habe, müsste ich vielleicht
mit Ersetzen der Empfänger-Variable durch eine feste E-Mail-Adresse im
php-Code (soll ja eh an mich gehen) die Gefahr des Missbrauchs als
Spam-Schleuder doch bannen können(?)

[at] Sven Driehling: Umlaute kommen Problemlos durch.

Gruß

Lars
lars [ Do, 16 August 2007 08:17 ] [ ID #1797033 ]

Re: register_globals off - Anfängerproblem

Lars meinte:

> Es funzt jetzt :-)), ich könnte mich jetzt an die Decke freuen, aber
> jetzt muss ich wohl irgendwie versuchen einzuschätzen, wie groß das
> Sicherheitsproblem ist.

Das merkst du dann, wenn dein Server als Spamschleuder anfängt zu arbeiten.

> Zum einen ist da der Tipp auf einer recht angesehenen Webseite (hier
> habe ich den Code her, es wird jedoch kein Wort über
> Sicherheitsprobleme verloren)
> http://www.vbarchiv.net/archiv/tipp_details.php?pid=953

Woran machst du "angesehen" fest? Rein optisch und technisch (348 Fehler
meldet der Validator) ist die Seite schon eine Katastrofe. Und auch wenn
der Tipp schon 3 Jahre alt ist: Die Sicherheitsprobleme waren schon
damals bekannt.

Sogar das Manual liefert schon brauchbarere Varianten. [1]

> Zum anderen gibt es hier die vielen Warnungen.

Zu recht.

> Wenn ich das Problem richtig verstanden habe, müsste ich vielleicht
> mit Ersetzen der Empfänger-Variable durch eine feste E-Mail-Adresse im
> php-Code (soll ja eh an mich gehen) die Gefahr des Missbrauchs als
> Spam-Schleuder doch bannen können(?)

CCs, BCCs setzt man im Header. Die sollten also auch entsprechend
gefiltert werden. Und nach der 1.000 Spammail in den letzten 10 Stunden
nervt es auch dich als einzigen Empfänger...


Gruß, Gregor



[1] http://de.php.net/manual/en/function.mail.php


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum
Gregor Kofler [ Do, 16 August 2007 09:42 ] [ ID #1797037 ]

Re: register_globals off - Anfängerproblem

> CCs, BCCs setzt man im Header. Die sollten also auch entsprechend
> gefiltert werden.

Das mit den CCs und BCCs habe ich jetzt - so hoffe ich - entschärft:

<?php

$abs =3D preg_replace( "/[^a-z0-9 !?:;,.\/_\-=3D+ [at] #$&\*\(\)]/im", "",
$_GET['abs'] );

$abs =3D preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",
$abs );

$betr =3D preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",
$_GET['betr'] );

$msg =3D preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",
$_GET['msg'] );

mail("mail [at] xy.de", $betr, $msg,
"From:{$abs}\nReply-To:{$_GET['mail']}\nX-Mailer: PHP/" .
phpversion());
echo "eMail wurde versandt";

?>

> Und nach der 1.000 Spammail in den letzten 10 Stunden
> nervt es auch dich als einzigen Empfänger...

Das kann ich doch bei einer hartcodierten E-Mail gar nicht verhindern,
oder?

Gruß

Lars
lars [ Do, 16 August 2007 14:08 ] [ ID #1797047 ]

Re: register_globals off - Anfängerproblem

Lars schrieb:
>> CCs, BCCs setzt man im Header. Die sollten also auch entsprechend
>> gefiltert werden.
>
> Das mit den CCs und BCCs habe ich jetzt - so hoffe ich - entschärft:
>
> <?php
>
> $abs =3D preg_replace( "/[^a-z0-9 !?:;,.\/_\-=3D+ [at] #$&\*\(\)]/im", "",=

> $_GET['abs'] );
>
> $abs =3D preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",
> $abs );
>
> $betr =3D preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",=

> $_GET['betr'] );
>
> $msg =3D preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",
> $_GET['msg'] );
>
> mail("mail [at] xy.de", $betr, $msg,
> "From:{$abs}\nReply-To:{$_GET['mail']}\nX-Mailer: PHP/" .
> phpversion());
> echo "eMail wurde versandt";
>
> ?>

Ueber das ungepruefte $_GET['mail'] lassen sich beliebige weitere
Angaben in die Header(4. Parameter) einschleusen so das hier CC/BCCs
definiert werden koennen und andere damit zugespamt werden koennen.

Des weiteren sieht mir die Regex fuer die E-Mail Adressen ein bisschen
'mau' aus. In der rfc822.php aus dem pear/mail Paket findest du eine
bessere Regex.

Gruss
Joerg

--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
Joerg Behrens [ Do, 16 August 2007 14:22 ] [ ID #1797048 ]

Re: register_globals off - Anfängerproblem

> Ueber das ungepruefte $_GET['mail'] lassen sich beliebige weitere
> Angaben in die Header(4. Parameter) einschleusen so das hier CC/BCCs
> definiert werden koennen und andere damit zugespamt werden koennen.

Danke, Jörg, Du hast natürlich Recht. Nun folgendermaßen geändert, =
da
ich "Reply to" gar nicht benötige.

mail("mail [at] xy.de", $betr, $msg,
"From:{$abs}\n\nX-Mailer: PHP/" . phpversion());
echo "eMail wurde versandt";

> Des weiteren sieht mir die Regex fuer die E-Mail Adressen ein bisschen
> 'mau' aus. In der rfc822.php aus dem pear/mail Paket findest du eine
> bessere Regex.

Die habe ich nicht gefunden. Aber noch diese ergoogelt:

"!^[a-z0-9]+[w.-]+ [at] [a-z0-9]+[w.-]+.[a-z]{2,4}$!i"
"^[a-z0-9]+([-_\.]?[a-z0-9])+ [at] [a-z0-9]+([-_\.]?[a-z0-9])+\.[ a-z]{2,4}"
"^[a-z0-9]+([-_\.]?[a-z0-9])+ [at] [a-z0-9|ü|ä|ö]+([-_\.]?[ a-z0-9|ü|ä|=
ö])+\.
[a-z]{2,4}"

Ist da was bei, was Du meintest?

Gruß

Lars
lars [ Do, 16 August 2007 15:22 ] [ ID #1797049 ]

Re: register_globals off - Anfängerproblem

Lars schrieb:
>> Ueber das ungepruefte $_GET['mail'] lassen sich beliebige weitere
>> Angaben in die Header(4. Parameter) einschleusen so das hier CC/BCCs
>> definiert werden koennen und andere damit zugespamt werden koennen.
>
> Danke, Jörg, Du hast natürlich Recht. Nun folgendermaßen geände=
rt, da
> ich "Reply to" gar nicht benötige.
>
> mail("mail [at] xy.de", $betr, $msg,
> "From:{$abs}\n\nX-Mailer: PHP/" . phpversion());
> echo "eMail wurde versandt";
>
>> Des weiteren sieht mir die Regex fuer die E-Mail Adressen ein bisschen=

>> 'mau' aus. In der rfc822.php aus dem pear/mail Paket findest du eine
>> bessere Regex.
>
> Die habe ich nicht gefunden. Aber noch diese ergoogelt:
>
> "!^[a-z0-9]+[w.-]+ [at] [a-z0-9]+[w.-]+.[a-z]{2,4}$!i"
> "^[a-z0-9]+([-_\.]?[a-z0-9])+ [at] [a-z0-9]+([-_\.]?[a-z0-9])+\.[ a-z]{2,4}"
> "^[a-z0-9]+([-_\.]?[a-z0-9])+ [at] [a-z0-9|ü|ä|ö]+([-_\.]?[ a-z0-9|ü|=
ä|ö])+\.
> [a-z]{2,4}"
>
> Ist da was bei, was Du meintest?

Unter
http://chora.php.net/viewvc.cgi/pear/Mail/Mail/RFC822.php?re vision=3D1.23=
&view=3Dmarkup
in der letzten Funktion. Du scheints da einen aelteren Stand zuhaben
weil die Regex davon ausgeht das eine *.tld max. 4 Zeichen hat was aber
nicht mehr stimmt.

Gruss
Joerg

--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
Joerg Behrens [ Do, 16 August 2007 15:56 ] [ ID #1797051 ]

Re: register_globals off - Anfängerproblem

Joerg Behrens schrieb:

> weil die Regex davon ausgeht das eine *.tld max. 4 Zeichen hat was aber
> nicht mehr stimmt.

Welche Top Level Domain hat denn mehr als 4 Zeichen? Ich kenne
jedenfalls keine.

Gruß. Claus
Claus Reibenstein [ Do, 16 August 2007 16:11 ] [ ID #1797052 ]

Re: register_globals off - Anfängerproblem

Claus Reibenstein schrieb:
> Joerg Behrens schrieb:
>
>> weil die Regex davon ausgeht das eine *.tld max. 4 Zeichen hat was abe=
r
>> nicht mehr stimmt.
>
> Welche Top Level Domain hat denn mehr als 4 Zeichen? Ich kenne
> jedenfalls keine.

=2Emuseum
Ganz davon abgesehen: Wer sagt, dass der Domain-Part einer
E-Mail-Adresse eine Top-Level-Domain-Angabe haben muss? Lt. RfC822 ist
auch ? [at] ! eine gültige E-Mail-Adresse.


MfG
Niels

--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Niels Braczek [ Do, 16 August 2007 16:15 ] [ ID #1797053 ]

Re: register_globals off - Anfängerproblem

Claus Reibenstein meinte:
> Joerg Behrens schrieb:
>
>> weil die Regex davon ausgeht das eine *.tld max. 4 Zeichen hat was aber
>> nicht mehr stimmt.
>
> Welche Top Level Domain hat denn mehr als 4 Zeichen? Ich kenne
> jedenfalls keine.

Hausintern kommunizieren wir mit name [at] firma.intern.

Gruß, Gregor


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum
Gregor Kofler [ Do, 16 August 2007 17:20 ] [ ID #1797058 ]

Re: register_globals off - Anfängerproblem

> Unterhttp://chora.php.net/viewvc.cgi/pear/Mail/Mail/RFC822.p hp?revision=
=3D1....
> in der letzten Funktion. Du scheints da einen aelteren Stand zuhaben
> weil die Regex davon ausgeht das eine *.tld max. 4 Zeichen hat was aber
> nicht mehr stimmt.

Dort heißt es:

'/^([.0-9a-z_+-]+) [at] (([0-9a-z-]+\.)+[0-9a-z]{2,})$/i' : '/^([*+!.&#$|\'\
\%\/0-9a-z^_`{}=3D?~:-]+) [at] (([0-9a-z-]+\.)+[0-9a-z]{2,})$/i'

Das sind doch mehrere Ausdrücke, oder?

Wie packe ich das jetzt in mein preg_replace?

Gruß

Lars
lars [ Do, 16 August 2007 17:33 ] [ ID #1797059 ]

Re: register_globals off - Anfängerproblem

Niels Braczek schrieb:

> Claus Reibenstein schrieb:
>
>> Welche Top Level Domain hat denn mehr als 4 Zeichen? Ich kenne
>> jedenfalls keine.
>
> .museum

Und .travel - <http://de.wikipedia.org/wiki/Top-Level-Domain> hat mich
inzwischen aufgeklärt.

> Ganz davon abgesehen: Wer sagt, dass der Domain-Part einer
> E-Mail-Adresse eine Top-Level-Domain-Angabe haben muss? Lt. RfC822 ist
> auch ? [at] ! eine gültige E-Mail-Adresse.

Aber nur in einem bestimmten Kontext sinnvoll.

Gruß. Claus
Claus Reibenstein [ Do, 16 August 2007 16:23 ] [ ID #1797060 ]

Re: register_globals off - Anfängerproblem

Lars schrieb:
>> Unterhttp://chora.php.net/viewvc.cgi/pear/Mail/Mail/RFC822.p hp?revisio=
n=3D1....
>> in der letzten Funktion. Du scheints da einen aelteren Stand zuhaben
>> weil die Regex davon ausgeht das eine *.tld max. 4 Zeichen hat was abe=
r
>> nicht mehr stimmt.
>
> Dort heißt es:
>
> '/^([.0-9a-z_+-]+) [at] (([0-9a-z-]+\.)+[0-9a-z]{2,})$/i' : '/^([*+!.&#$|\'\=

> \%\/0-9a-z^_`{}=3D?~:-]+) [at] (([0-9a-z-]+\.)+[0-9a-z]{2,})$/i'
>
> Das sind doch mehrere Ausdrücke, oder?

Ja, jenachdem was $strict enthaelt wird die eine oder die andere REGEX
genommen.

> Wie packe ich das jetzt in mein preg_replace?

Garnicht, weil du preg_match() verwenden willst um bei einem False
entsprechend zu reagieren. Oder wie willst du eine ungueltige E-Mail in
einer gueltige umwandeln?

Gruss
Joerg

--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
Joerg Behrens [ Do, 16 August 2007 18:30 ] [ ID #1797062 ]

Re: register_globals off - Anfängerproblem

Gregor Kofler schrieb:
> Claus Reibenstein meinte:
>> Joerg Behrens schrieb:
>>
>>> weil die Regex davon ausgeht das eine *.tld max. 4 Zeichen hat was
>>> aber nicht mehr stimmt.
>>
>> Welche Top Level Domain hat denn mehr als 4 Zeichen? Ich kenne
>> jedenfalls keine.
>
> Hausintern kommunizieren wir mit name [at] firma.intern.

Yep, auch domain.local wird gerne intern verwendet.

Gruss
Joerg

--
TakeNet GmbH, Geschaeftsfuehrer Wolfgang Meier
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
HRB Wuerzburg 6940 http://www.takenet.de
Joerg Behrens [ Do, 16 August 2007 18:32 ] [ ID #1797063 ]

Re: register_globals off - Anfängerproblem

> > Wie packe ich das jetzt in mein preg_replace?
>
> Garnicht, weil du preg_match() verwenden willst um bei einem False
> entsprechend zu reagieren. Oder wie willst du eine ungueltige E-Mail in
> einer gueltige umwandeln?

Gar nicht, die E-Mails, die ich haben möchte, werden bereits in der
Desktop-Anwendung validiert. Und Spam-Mails sollen nur einfach nicht
ausgeführt werden.

Mein erstes php-Proggi sieht also nun folgendermaßen aus und ich frag
zum Abschluss nochmal in die Runde, ob das Sicherheitsrisiko auf diese
Weise zumindest "einigermaßen annehmbar" vermindert ist:


<?php

$abs =3D preg_replace( "/^([*+!.&#$|\'\\%\/0-9a-z^_`{}=3D?~:-]+) [at] (([0-9a-
z-]+\.)+[0-9a-z]{2,})$/i", "",
$_GET['abs'] );

$abs =3D preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",
$abs );

$betr =3D preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",
$_GET['betr'] );

$msg =3D preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "",
$_GET['msg'] );

mail("mail [at] xy.de", $betr, $msg,
"From:{$abs}\n\nX-Mailer: PHP/" . phpversion());
echo "eMail wurde versandt";

?>


Gruß

Lars
lars [ Fr, 17 August 2007 08:49 ] [ ID #1798053 ]

Re: register_globals off - Anfängerproblem

Lars <lars.vegas3000 [at] web.de> wrote:
> [at] Sven Driehling: Umlaute kommen Problemlos durch.

Nicht mit dem hier geposteten Code. Du meinst "bei mir geht's".


--
Web (en): http://www.no-spoon.de/ -*- Web (de): http://www.frell.de/
Stefan Scholl [ Fr, 17 August 2007 11:01 ] [ ID #1798059 ]

Re: register_globals off - Anfängerproblem

> Lars <lars.vegas3... [at] web.de> wrote:
> > [at] Sven Driehling: Umlaute kommen Problemlos durch.
>
> Nicht mit dem hier geposteten Code. Du meinst "bei mir geht's".

Danke für den Hinweis.

Hängt das jetzt vom Server ab, auf dem das php-Script liegt oder vom
Betriebssystem, auf dem sich meine Desktop-Anwendung befindet.

Wenn vom Server, dann genügt mir doch eigentlich ein "bei mir gehts",
oder? Desgleichen, wenn es von meinem E-Mail-Proggi abhängt...

Gruß

Lars
lars [ Fr, 17 August 2007 11:45 ] [ ID #1798064 ]

Re: register_globals off - Anfängerproblem

Lars wrote:

Hallo,

> Mein erstes php-Proggi sieht also nun folgendermaßen aus und ich fr=
ag
> zum Abschluss nochmal in die Runde, ob das Sicherheitsrisiko auf dies=
e
> Weise zumindest "einigermaßen annehmbar" vermindert ist:

Vermutlich nicht, weil

Bcc : [emailadressen]

auch funktionieren sollte aber auf Grund der Leerzeichen zwischen Bcc
und dem Doppelpunkt nicht ausgefiltert wird.

> <?php
>
> $abs =3D preg_replace( "/^([*+!.&#$|\'\\%\/0-9a-z^_`{}=3D?~:-]+) [at] ((=
[0-9a-
> z-]+\.)+[0-9a-z]{2,})$/i", "",
> $_GET['abs'] );


Warum nicht etwas in der Art von

$abs =3D trim($abs);

if(!preg_match('/^[a-zA-Z0-9_]+ [at] [a-zA-Z0-9_.]+$/'), $abs)) {
die("FEHLER: Nicht akzeptierte Absenderadresse!");
// Loggen des Fehlers
}

Die Strategie nur das zu zulassen, was man zulassen möchte
halte ich für besser als zu versuchen nicht erlaubtes auszufiltern,
weil es im ersteren Fall weniger Möglichkeiten gibt. Speziell
bei Sachen für den eigenen Bedarf hat man die Möglichkeit die
Grenzen recht eng zu ziehen.

> $abs =3D preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", ""=
,
> $abs );


tschuess
[|8:)
--
PHP: MonthGrid - Einfaches generieren von Kalenderansichten
http://www.sven-drieling.de/diary/2007/08/16/PHP_MonthGrid.h tml
Sven Drieling [ Fr, 17 August 2007 16:40 ] [ ID #1798092 ]
PHP » de.comp.lang.php.misc » register_globals off - Anfängerproblem

Vorheriges Thema: Problem mit Zeitstempel
Nächstes Thema: Editor und Debugger für Projekt mit PHP und JavaScript