 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
06.03.2006, 16:24
|
#76
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
wird verhindert.
|
|
|
06.03.2006, 20:26
|
#77
|
|
TP-Newbie
Registriert seit: Mar 2006
|
@St@eff.en
Bei mir funzt das irgendwie nicht so, oder ich bin heut einfach zu blöd dafür.
Wenn ich die abfrage von deinen script so abänder, dann sollte er doch "kein spam" ausgeben, oder hab ich da nen Denkfehler?
PHP-Code:
if(strpos($email,"\r\n")>0 || strpos($email,"\n")>0) {
die("kein spam");
}
|
|
|
06.03.2006, 22:48
|
#78
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
das betrifft dann nur email, Du müsstest ebenso mit name verfahren.
|
|
|
06.03.2006, 23:18
|
#79
|
|
TP-Newbie
Registriert seit: Mar 2006
|
Naja, hab das sowohl für name als auch für email eingegeben.
Hab beim namensfeld irgendeinname\n und bei email test@test.com\n eingegeben und die email wird abgeschickt.
Hab an deinem script nix geändert, außer eben diese zeilen:
PHP-Code:
if(strpos($name,"\r\n")>0 || strpos($name,"\n")>0) { die("no spam"); } if(strpos($email,"\r\n")>0 || strpos($email,"\n")>0) { die("kein spam"); }
Auch wenn ich deine php-datei unberührt lasse, wird die email abgeschickt.
Es wird auch nix in die attack.txt eingetragen!
Geändert von vindiesel (06.03.2006 um 23:20 Uhr).
|
|
|
07.03.2006, 05:54
|
#80
|
|
TP-Greis
Registriert seit: Aug 2002
Ort: Hochfranken
|
moin,moin
nun, diese Art Spam, dass sich jemand hinsetzt, einen Fantasienamen einträgt und eine vernünftig aufgebaute Fantasie-Mailadresse und dann damit eine Nachricht losschickt, die kannst doch in einem solchen Script nicht verhindern. Wie soll das Script zwischen "vindiesel", "irgendeinname" und "Holger Maier" entscheiden, ob der Name "glaubwürdig und echt" ist oder nicht? Es geht doch darum, dass böswillige Scripte nicht dein Formular nutzen, um Spam an 10000 andere EMPFÄNGER zu verschicken, die du gar nicht im Script als Empfänger vorgesehen hast.
Steff
|
|
|
07.03.2006, 08:39
|
#81
|
|
TP-Newbie
Registriert seit: Mar 2006
|
moin,
nun es geht doch darum, dass u.a. "\n" verhindert werden soll und genau das passiert eben nicht!
Die abfrage greift doch hier einfach nicht, zumindest bei mir nicht.
|
|
|
07.03.2006, 09:42
|
#82
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
PHP-Code:
$istlgeich = "\n" == '\n';
echo $istgleich ? 'Ja' : 'Nein';
echo "<pre>";
var_dump(array("\n",'\n'));
echo "</pre>";
...beides sollte dir deutlich mache, dass die Zeichenkette \n was anderes ist als das Steuerzeichen \n ... Klingt komisch - ist aber so
Gruss
Jan
|
|
|
06.04.2006, 00:18
|
#83
|
|
TP-Veteran
Registriert seit: Feb 2002
|
Ich habe mal zum schnellen Test ein einfaches Skript zusammengebastelt. Ist sicher selbsterklärend.
Eventuell muss man das passende PEAR Paket installieren. Viel Spaß damit.
PHP-Code:
// PEAR HTTP Request einbinden. Vielen Dank an die Maintainer Richard Heyes und Alexey Borzov require 'HTTP/Request.php';
// Assoc Array mit den Formularfeldern. Key = Feldname, Value = Eintrag $send = array( 'Name'=> 'Max', 'Vorname'=> 'Mustermann', 'Email'=> "example@example.com%0DBcc: Foo@example.com", // Dieses Feld wollen wir injecten 'Nachricht'=> 'Dies ist ein Test ...', 'Submit' => 'Submit' );
// Falls das Formular in einem htaccess geschützten Bereich liegt, hier Benutzer und Kennwort eintragen $user = false; $pass = false;
// Erst das HTTP_REQUEST Objekt erzeugen ... $r =& new HTTP_Request('http://example.com/meinFormmailer.php');
// ... POST als MEhtode bestimmen ... $r->setMethod(HTTP_REQUEST_METHOD_POST);
// ... eventuell per HTTP authentifizieren ... if($user && $pass) $r->setBasicAuth($user, $pass);
// ... alle Formularfelder an das Objekt übergeben ... foreach($send as $k=>$v){ $r->addPostData($k, $v); }
// ... und "den Abschicken Button drücken". $rs = $r->sendRequest();
if (PEAR::isError($rs)===true){ echo $rs->getMessage(); // falls ein Fehler auftrat }else{ echo $r->getResponseBody(); // Hier wird der body der aufgerufenen Seite ausgegeben. Hat es geklappt? }
Und hier das passende HTML Formular:
Code:
<form method="post" action="">
<label for="Name">Name</label><input type="text" name="Name" id="Name" /><br />
<label for="Vorname">Vorname</label><input type="text" name="Vorname" id="Vorname" /><br />
<label for="Email">Email</label><input type="text" name="Email" id="Email" /><br />
<label for="Nachricht">Nachricht</label><input type="text" name="Nachricht" id="Nachricht" /><br />
<input type="submit" value="Submit" />
</form>
<?php
if($_POST){
mail('me@example.com', 'Email von ' . $_POST['Email'], $_POST['Nachricht']);
}
?>
\r und \n reicht scheinbar nicht. Ich war immernoch in der Lage einen String zu injecten. Deshalb prüfe ich jetzt i.d.R case-insensitive auf folgenden Literale:
\r
\n
%0D
%0A
Content-Type:
MIME-Version:
Subject:
bcc:
cc:
Content-Transfer-Encoding:
__________________
class GetProfileCustomerEntityReceiverInformationReceiverAndProgrammingInforma...{
public function __construct(){ if(!$this) die(' '); } }
http://www.thedailywtf.com/
Geändert von fettmme (06.04.2006 um 00:27 Uhr).
|
|
|
18.06.2006, 16:25
|
#84
|
|
TP-Moderator
Registriert seit: Mar 2006
|
Seit einiger Zeit bin ich auch Opfer der Bots geworden. Seit dem ich den Formmailer von St@eff.en benutze ist endlich Schluß. Daher dickes Lob an St@eff.en 
|
|
|
06.08.2006, 17:12
|
#85
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Passend zum Thema Spambots eine "neue" Art von Captcha: http://www.hotcaptcha.com/ 
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
11.08.2006, 22:10
|
#86
|
|
TP-Supporter
Registriert seit: Dec 2005
|
Ahahaha, wie geil ist das denn 
|
|
|
07.11.2006, 15:19
|
#87
|
|
TP-Junior
Registriert seit: Apr 2006
|
Kontaktformular SPAM - E-Mailinjection
Hallo zusammen, zunehmend gehen die Spammer auf Kontaktformulare los,
da ich nicht auch betroffen sein möchte, bin ich meine Formulare am überarbeiten.
Hierzu folgende, zugegeben recht restriktive Möglichkeit.
Mein Problem, resp. was ich nicht verstehe. Das Funktioniert mit allen verbotenen
Zeichen super, bis auf \r und \n. Irgendwie scheint die POST Variable jeweils
auch ein solches Steuerzeichen zu enthalten, was mir aber völlig unlogisch ist.
Hat mir jemand einen Anhaltspunkt, damit man die POST Felder auch auf diese
zwei Steuerzeichen überprüfen könnte. So könnte man meiner Meinung nach recht
einfach E-Mailinjections nachhaltig verhindern.
Danke für eure Antworten und noch einen schönen Nachmittag.
HTML-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>E-Mail</title>
</head>
<body>
<?php
// list of forbidden text in input fields
$forbidden[0] = "%0A";
$forbidden[1] = "%0D";
//$forbidden[2] = "\\n";
//$forbidden[3] = "\\r";
$forbidden[4] = "content-type:";
$forbidden[5] = "to:";
$forbidden[6] = "cc:";
$forbidden[7] = "bcc:";
$forbidden[8] = "from:";
$forbidden[9] = "subject:";
$forbidden[10] = "href=";
// check forbidden text in all post variables
foreach($_POST as $key=>$value)
{
foreach($forbidden as $forbidden_text)
{
if (eregi($forbidden_text, stripslashes($value)))
{
echo stripslashes($value)." - ".$forbidden_text." - SPAM<br>";
$spamfound = "1";
$spammessage = "Nicht erlaubte Steuerzeichen in Ihrer Eingabe gefunden. Nachricht als Spam deklariert.<br><strong>Die Verarbeitung wurde abgebrochen.</strong>";
}
}
}
?>
<form action="index.php?action=submit" method="POST">
<input type="text" size="30" name="testfeld" value="<?php echo stripslashes($_POST['testfeld']); ?>">
<input type="submit" name="submit" value="senden">
</form>
</body>
</html>
|
|
|
07.05.2007, 18:20
|
#88
|
|
TP-Insider
Registriert seit: May 2002
Ort: Niederlande
|
|
|
|
24.01.2008, 18:49
|
#89
|
|
TP-Moderator
Registriert seit: Nov 2001
Ort: Vienna
|
Hallo,
Mein E-Mail sieht so aus:
Zitat:
X-Mailer: PHP/4.4.7
X-Sender-IP: 91.128.xx.xx
Content-Type: text/html; charset=ISO-8859-1;
Message-Id: <20080124173815.86D76C0F02F7@dd7232blah.com>
Date: Thu, 24 Jan 2008 18:38:15 +0100 (CET)
Name: dafsdfasdfasdfasfdas<br />
...
|
Habe aber soeben die neue? Version von deiner Seite genommen.
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
| | |