php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.09.2005, 09:07  
Benutzer
 
Registriert seit: 07.11.2004
Beiträge: 60
Helmuth74
Helmuth74 eine Nachricht über ICQ schicken
Standard SPAMer oder Hacker? Was kann ich dagegen tun?

Hallo!

Damit Kunden mit mir in Kotankt treten können habe ich sowas wie einen kleinen WebMailer geschrieben. Der hat auch lange wunderbar funktioniert - doch auf einmal bekomme ich am Tag bis zu 50 leere Mails oder Mails mit einem verstümmelten HTML-Code zugestellt.

Ich logge immer die IP-Adressen der "Absender" mit und habe festgestellt, dass oft immer wieder die gleichen Adressen auf mein PHP-Script zugreifen.

Mein Verdacht liegt darin, dass hier jemand meinen Server attackiert...

Aber egal - was soll/kann ich machen, damit mein Script wieder "normal" funktioniert bzw. wie könnte ich das Script absichern?

Witzig ist auch, obwohl ich das Script unbenannt und die Verlinkungen aus meinen HTML-Seiten herausgenommen habe TROTZDEM noch auf das Script zugegriffen wird!

Hier mal der Code.

Code:
<?php 
$ip=getenv("REMOTE_ADDR");
$stempel=gmdate("M d Y H:i:s", time());

$Name = $_POST["Name"];
$Telefon = $_POST["Telefon"];
$eMail = $_POST["eMail"];
$Betreff = $_POST["Betreff"];
$Nachricht = $_POST["Nachricht"];

$fp1 = popen ("c:\\sendmail\\sendmail.exe -t","w"); 
fwrite ($fp1,"Subject: $Betreff 
   From: Meine Adresse <Meine.Adresse@meine.Firma.at>
   To: Ziel.Adresse@meine.Firma.at

   Name: $Name
   Telefon: $Telefon
   eMail-Adresse: $eMail
   $linie1  
   Nachricht:\n
   $Nachricht
   "); 
pclose ($fp1);
?>
Bin für jeden Tipp und Ohrfeige bereit :wink:
Helmuth74 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.09.2005, 09:16  
Benutzer
 
Registriert seit: 07.11.2004
Beiträge: 60
Helmuth74
Helmuth74 eine Nachricht über ICQ schicken
Standard

Bevor ihr mich schimpft...
Ich habe nach meinem Problem gegooglt und in den NGs nachgesehen - aber für mich nix brauchbares gefunden.

Hier im Forum hab ich zwar was ähnliches? gefunden, kann aber auch nix damit anfangen, da ich mir noch zu hoch ist.... sorry falls ich hier das Problem "SPAM" nochmals aufkoche
Helmuth74 ist offline  
Alt 19.09.2005, 10:37  
Gast
 
Beiträge: n/a
Standard

Hi, ich hab vor 3 Tagen mit PHP angefangen aber ich denke ich kenne die Lösung des Problems:

PHP-Code:
<?php
 
$ip
=getenv("REMOTE_ADDR"); 
$stempel=gmdate("M d Y H:i:s"time()); 

$error=0;



$Name $_POST["Name"]; 
$Telefon $_POST["Telefon"]; 
$eMail $_POST["eMail"]; 
$Betreff $_POST["Betreff"]; 
$Nachricht $_POST["Nachricht"]; 

if(empty(
$Nachricht)) {
$error=1; }
if(empty(
$Name)) {
$error=1; }
if(empty(
$Betreff)) {
$error=1; }

If(
$error==0) {

$fp1 popen ("c:\\sendmail\\sendmail.exe -t","w"); 
fwrite ($fp1,"Subject: $Betreff 
   From: Meine Adresse <Meine.Adresse@meine.Firma.at> 
   To: [email]Ziel.Adresse@meine.Firma.at[/email] 

   Name: $Name 
   Telefon: $Telefon 
   eMail-Adresse: $eMail 
   $linie1  
   Nachricht:\n 
   $Nachricht 
   "
); 
pclose ($fp1); 

}

else {
echo 
"Bitte überprüfen sie ihre Angaben.";
}
?>
Also, was wir hier tun ist:
Wir erzeugen eine Variable namens Error, und geben ihr einen Wert (0).
Dann fragen wir ab ob die wichtigen Felder gefüllt sind, wenn nicht bekommt die Variable Error den Wert 1.
Zu guter letzt erstellen wir eine schleife die guckt ob error = 0 ist, wen ja sendet er die Email, wenn nicht wird eine Fehlermeldung ausgegeben.

Du darfst den Code so übernehmen wenn du willst.

Achja, an deiner stelle würde ich deine Email Adresse die du auf der Page hast per include Datei machen, damit sogenannte "Harvester" (programme die den SeitenQuelltext nach Email adressen absuchen um sie zu zuspammen) die nicht finden. Das würde dann so aussehen:

PHP-Code:
<?php
 
include("#meine_Email.inc");

$ip=getenv("REMOTE_ADDR"); 
$stempel=gmdate("M d Y H:i:s"time()); 

$error=0;



$Name $_POST["Name"]; 
$Telefon $_POST["Telefon"]; 
$eMail $_POST["eMail"]; 
$Betreff $_POST["Betreff"]; 
$Nachricht $_POST["Nachricht"]; 

if(empty(
$Nachricht)) {
$error=1; }
if(empty(
$Name)) {
$error=1; }
if(empty(
$Betreff)) {
$error=1; }

If(
$error==0) {

$fp1 popen ("c:\\sendmail\\sendmail.exe -t","w"); 
fwrite ($fp1,"Subject: $Betreff 
   From: Meine Adresse <Meine.Adresse@meine.Firma.at> 
   To: $Meine_Mail 

   Name: $Name 
   Telefon: $Telefon 
   eMail-Adresse: $eMail 
   $linie1  
   Nachricht:\n 
   $Nachricht 
   "
); 
pclose ($fp1); 

}

else
echo 
"Bitte überprüfen sie ihre Angaben.";
?>



//Die Include Datei:
<?
$Meine_Mail
="MeineMail@MeineFirma.de";
?>
Die Raute (#) im Namen der Includedatei, hat den Zweck das man nicht auf die Inlude Datei direkt zugreifen kann, da das Raute Zeichen auch als sprungmarke im Browser angegeben wird, das heisst wenn jetzt jemand auf: www.deineFirma.at/#meine_email.inc
geht wird der Browser die Seite nicht anzeigen können da er versucht zu'r sprungmarke zu springen die nicht existiert.
 
Alt 19.09.2005, 11:49  
Benutzer
 
Registriert seit: 07.11.2004
Beiträge: 60
Helmuth74
Helmuth74 eine Nachricht über ICQ schicken
Standard

Danke LJ_1102.
Deine Idee klingt logisch und verständlich für mich
Werde das Script gleich umschreiben und die Sache weiter beobachten ...

lG Helmuth
Helmuth74 ist offline  
Alt 19.09.2005, 12:50  
Benutzer
 
Registriert seit: 07.11.2004
Beiträge: 60
Helmuth74
Helmuth74 eine Nachricht über ICQ schicken
Standard

Sorry - aber ich bekomm eine Fehlermeldung...

Wenn ich alle Form-Felder ausgefüllt habe sagt mir mein Browser:

Notice: Undefined variable: error in D:\Web-Server\Apache2\htdocs\Sekretariat\Mail\mssekre.php on line 66


PHP-Code:
<?php

$ip
=getenv("REMOTE_ADDR");  
$stempel=gmdate("M d Y H:i:s"time());  

$error=0



$Name $_POST["Name"];  
$Telefon $_POST["Telefon"];  
$eMail $_POST["eMail"];  
$Betreff $_POST["Betreff"];  
$Nachricht $_POST["Nachricht"];  

if(empty(
$Nachricht)) { 
$error=1; } 
if(empty(
$Name)) { 
$error=1; } 
if(empty(
$Betreff)) { 
$error=1; } 

If(
$error==0) {             // <==== Diese Zeile ist 66 !!

$fp1 popen ("c:\\sendmail\\sendmail.exe -t","w");  
fwrite ($fp1,"Subject: $Betreff  
   From: Meine Adresse <Meine.Adresse@meine.Firma.at>  
   To: [email]Ziel.Adresse@meine.Firma.at[/email]  

   Name: $Name  
   Telefon: $Telefon  
   eMail-Adresse: $eMail  
   $linie1   
   Nachricht:\n  
   $Nachricht  
   "
);  
pclose ($fp1);  



else { 
echo 
"Bitte überprüfen sie ihre Angaben."


?>
Was ist hier falsch? Danke und lG Helmuth
Helmuth74 ist offline  
Alt 19.09.2005, 12:58  
Benutzer
 
Registriert seit: 07.11.2004
Beiträge: 60
Helmuth74
Helmuth74 eine Nachricht über ICQ schicken
Standard

Ubs - Sorry - Hab eine Zeile vergessen einzutragen .. es ist eh alles OK!
Helmuth74 ist offline  
Alt 19.09.2005, 13:01  
Erfahrener Benutzer
 
Registriert seit: 07.04.2005
Beiträge: 184
LA-Finest
Standard

versuchs mal so:

PHP-Code:
<?php


if(empty($Nachricht)) {  
$error='1'; }  
elseif(empty(
$Name)) {  
$error='1'; }  
elseif(empty(
$Betreff)) {  
$error='1'; }  
else
$error='0';

?>
keine garantie obs funzt.

gruß la-finest
__________________
Eine Programmiersprache kann man nicht perfekt beherrschen,
nur gut.
Ansonsten hätte man sie erfunden!

www.bazubi.com/forum --> allgem. IT-Forum
LA-Finest ist offline  
Alt 19.09.2005, 14:14  
Erfahrener Benutzer
 
Benutzerbild von Andreas
 
Registriert seit: 22.04.2005
Beiträge: 391
Andreas ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nimm einfach ne Session...

PHP-Code:
<?php
session_start
();

// Anzahl erlaubter E-Mails
$emails 3;

if(!isset(
$_SESSION['emails'])) 
    
$_SESSION['emails']=0;
    
    
if(
$_SESSION['emails']>=$emails) {
    
?>Ihre E-Mail wurde bereits versendet!<?
} else {

    
$ip=getenv("REMOTE_ADDR"); 
    
$stempel=gmdate("M d Y H:i:s"time()); 

    
$Name $_POST["Name"]; 
    
$Telefon $_POST["Telefon"]; 
    
$eMail $_POST["eMail"]; 
    
$Betreff $_POST["Betreff"]; 
    
$Nachricht $_POST["Nachricht"]; 

    
$fp1 popen ("c:\\sendmail\\sendmail.exe -t","w"); 
    
fwrite ($fp1,"Subject: $Betreff 
       From: Meine Adresse <Meine.Adresse@meine.Firma.at> 
       To: [email]Ziel.Adresse@meine.Firma.at[/email] 

       Name: $Name 
       Telefon: $Telefon 
       eMail-Adresse: $eMail 
       $linie1  
       Nachricht:\n 
       $Nachricht 
       "
); 
    
pclose ($fp1);
    
$_SESSION['emails']++;
}

?>
Andreas ist offline  
Alt 05.12.2005, 18:21  
Erfahrener Benutzer
 
Benutzerbild von SvenLittkowski
 
Registriert seit: 05.09.2004
Beiträge: 578
SvenLittkowski zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Hallo.

Du benutzt einen Windows-Server? Probiere doch zuallererst, die .exe-Datei umzubenennen, damit die (automatischen?) Spammer nicht mehr auf den ihnen bekannten Dateinamen zugreifen können.

Ansonsten in der Tat nur beschriebene Mails versenden (siehe LA-Finest).

Und vieleicht außerdem Captchas (im Internet recherchieren) einsetzen, die machen den meisten Spammern den Gar aus.

Sven
SvenLittkowski ist offline  
 


Themen-Optionen
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP: Sicherheit gegen Hacker SvenLittkowski PHP Tipps 2007 19 05.12.2005 16:51
... Frage an die Profis PHP Tipps 2005-2 11 17.10.2005 16:32
hacker hat sich über die hp hergemacht... Beitragsarchiv 14 08.08.2005 16:18
Is your Son a Computer Hacker?? Off-Topic Diskussionen 8 10.09.2004 20:00

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
seitenquelltext hacken, seitenquelltext umschreiben, mit seitenquelltext hacken, hacker-was bedeuted die name, hacking leere email, sendmail.exe fehler codes, empty nachricht, skript was kann man dagegen tun, was kann hacker mit telefonnummer tun, lj_1102, e-mail hacker prüfen, seitenquelltexte umschreiben, $_post hacker sicher, sendmail.exe mindestens eins der felder, getenv php sicherheit, seitenquelltext umscrheiben, hacker e-mail adressen namen, hacken von seitenquelltexten, php felder gegen hacken, rautezeichen vor icq name

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.