Avatar billede big_ossi Nybegynder
11. marts 2008 - 08:22 Der er 19 kommentarer og
1 løsning

x-php spam abuse. Hvordan stoppes det ?

Hej

Har lavet et meget simpelt website i noget php og html.

Under sider hentes via include ud fra en get som kan ses længere nede.
Har fjernet alt mail og kontakt formular men siden bruges stadig til og sende spam igennem, sådan ca 180000 stk i døgnet.

Er der nogen som kan hjælpe ? Da det er ved at koste en del i lukkede webhoteller som ikke kan genåbnes.
Avatar billede fant0mas Nybegynder
11. marts 2008 - 08:24 #1
Du må aldrig lave en include via $_GET[] metoden.

Men lad os da se den :D
Avatar billede big_ossi Nybegynder
11. marts 2008 - 08:25 #2
index.php har en include af php filen pages inde i midten af designet.

----- pages.php------
<?
if  ($_GET['menu'] == "maskiner")
{ include("maskiner.php");
}
elseif($_GET['menu'] == "ref") {
include("ref.php");    }

elseif($_GET['menu'] == "billeder") {
include("billeder.php");    }

elseif($_GET['menu'] == "links") {
include("links.php");    }

elseif($_GET['menu'] == "nyhedsmail") {
include("nyhedsmail.php");    }

elseif($_GET['menu'] == "om") {
include("om.php");    }

elseif($_GET['menu'] == "kontakt") {
include("kontakt.php");    }           

else {
include("forside.php");
}
?>
Avatar billede leif Seniormester
11. marts 2008 - 08:25 #3
Laver du nogen for for validering på din kontakt side ?
Avatar billede big_ossi Nybegynder
11. marts 2008 - 08:29 #4
Jes der fandt jeg en kontakt formular med validering., hvor man skulle skrive en tal som blev lavet i noget image create.

Men den fjernede jeg for 1 md siden da jeg fik en advarsel om spam abuse og gik ud fra det var der den var gal. Men det var det åbenbart ikke da der i nat igen blev lavet et spam abuse som har resulteret i en lukning
Avatar billede leif Seniormester
11. marts 2008 - 08:29 #5
Må vi se den ?
Avatar billede leif Seniormester
11. marts 2008 - 08:30 #6
Hvad laver nyhedsmail.php ?
Avatar billede big_ossi Nybegynder
11. marts 2008 - 08:30 #7
hov der blev lavet 5 tal idet image der skulle skrives ind for at formularen blev afsendt
Avatar billede big_ossi Nybegynder
11. marts 2008 - 08:33 #8
Der står der at man kan sende en mail til nyheder@domain.dk og så få de seneste nyheder.

kontakt siden er kun tlf numre og adressen igen mail adresser eller kontakt formular.

2 sek så finder jeg lige en backup fil med den gamle kontakt form
Avatar billede big_ossi Nybegynder
11. marts 2008 - 08:37 #9
<?
include "mailform.php";
echo mailForm(); ?>

-----mailform.php-----

<?php
#############################################
# Mail formular v1                            #
# http://martin-nielsen.com                    #
#-------------------------------------------#
# Mailformular script med anti spam - nemt    #
# at opsætte                                #
#############################################

########### indstallation ###################
/*
Mail formular v1 er lavet så det er nemt at integrere i dit nuværende design
1) Læg koden ind i et nyt php dokument (mailForm.php) og gem det på serveren et sted hvor filen kan tilgåes gennem en browser
2) Ændrer de 6 indstillinger herunder
3) Åben det dokument hvor mailformularen skal vises
    3.1 Indsæt <?php include("sti/til/mailFormular.php"); ?> i toppen af dokumentet før alt andet - husk at ændre stien så det passer
        3.1.1 NB Hvis du inkluderer dit indhold i fx index.php skal ovenstående sættes ind i toppen af index.php
    3.2 Der hvor du ønsker mail formularen skal fremkomme skriver du <? echo mailForm(); ?>
4)Vupti - så burde det være klaret
5) Du kan ændre udseende af formularen ved at style følgerne ids
    #mailform_form - selve formularen
    #mailform_navn - navnet på afsender
    #mailform_emne - Emne linjen
    #mailform_email - Afsender e-mail
    #mailform_kode - Antispam feltet
    #mailform_besked - Besked feltet
    #mailform_sendMail - Afsend knappen
*/
##############################
## settings / indstillinger ##
##############################
$sendTo="mail@domain.dk"; //din e-mail adresse 
$ditNavn="domain.dk"; //dit navn
$antiSpam=1; //Antispam - 0 for ingen antispam 1 for antispam  - antispam kræver GD installeret på serveren
$subjectRestricted=0; //begræns emner 0 for frit emne, 1 for begrænset opsæt herunder
$restrictedSubjects="Comments,Complaints,Questions"; //begrænset emner, adskild med komma
$reply="<p>Tak for e-mailen, vi vender tilbage så hurtigt som muligt</p>"; //Svar besked når mailen er afsendt 
$stiTilScript="mailform.php"; //stien til mailForm.php

########################################### Ingen ændringer herunder nødvendigt ########################################### 
$done=0;
if ($_GET['action']=="code") {
session_name('wt_spam');
session_start();
  function imgKode() { //funktion til autogenerering af 7 cifret submit kode
    $tilladte = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ123456789";  //tilladte tegn
    for ($i=1;$i<=7;$i++) { ##løkke der vælger 7 tilfældige bogstaver fra de tilladte
      $kode .= $tilladte[mt_rand(0,(strlen($tilladte)-1))]; //hent tilfeldtigt tegn ud fra $tilladte
    }
    return $kode;  //retuner koden
}
    header("Content-type: image/jpeg");
    header("Cache-Control: must-revalidate"); //sørg for siden altid er opdateret
    header("Last-modified: ".gmdate("D, d M Y H:i:s", time())." GMT"); //skift sidst opdateret
    header("Expires: ".gmdate("D, d M Y H:i:s", time())." GMT");  //sæt udløb til nu
    $k=imgKode(); //generer kode
    $checkImg = ImageCreate(75, 30); //lav nyt billede
    $bg = imagecolorallocate($checkImg, 204, 204, 204); //sæt baggrund på billede til grå
    $sort = imagecolorallocate($checkImg, 0, 0, 0); //lav sort farve
    imagerectangle($checkImg,0, 0,74, 29, $sort); //lav kasse rundt om billedet i sort
    imagestring($checkImg, 5, 6, 6, $k, $sort); //indsæt key på billedet i sort
    imagejpeg($checkImg); //udskriv billede til skærm
    $_SESSION['imgkey']=md5($k); //opret session med $key i md5 encryption
die();
}
### funktioner###

function check_mail($email) { 
    if (eregi("^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+\\.[a-z]{2,6}$", $email)) { 
          return true; 
      } 
    return false; 
}
function mailto($fromname, $fromaddress, $toname, $toaddress, $subject, $message) { 
    $headers  = "MIME-Version: 1.0\n";
      $headers .= "Content-type: text/plain; charset=iso-8859-1\n"; 
  $headers .= "X-Priority: 3\n"; 
  $headers .= "X-MSMail-Priority: Normal\n";
  $headers .= "X-Mailer: php\n";
  $headers .= "From: \"".$fromname."\" <".$fromaddress.">\n";
  return mail($toaddress, $subject, $message, $headers);

function error($besked) {
    return '<span style="color:red">'.$besked.'</span>';
}
if ($antiSpam) session_name('wt_spam');session_start();
if (!check_mail($sendTo)) die(error('Din $sendTo adrresse er ikke gyldig'));
function mailForm() {
    global $sendTo, $antiSpam,$subjectRestricted, $restrictedSubjects,$reply,$done,$error,$stiTilScript,$ditNavn;
    $error=array();
    if ($antiSpam) $key=$_SESSION['imgkey'];$check=md5($_POST['kode']); 
    if (isset($_POST['sendMail']) && (empty($_POST['navn']) || empty($_POST['besked']) || empty($_POST['emne']) || !check_mail($_POST['e-mail']) || ($antiSpam && $key!=$check))) {
        $error[0]=error('Der opstod en fejl - alle felter skal v&aelig;re udfyldt korrekt - * indikerer fejl');
        if (empty($_POST['navn'])) $error[1]=error('*');
        if (empty($_POST['emne'])) $error[2]=error('*');
        if (empty($_POST['e-mail'])) $error[3]=error('*');
        if (empty($_POST['besked'])) $error[4]=error('*');
        if (!check_mail($_POST['e-mail'])) $error[3]=error('*');
        if ($key!=$check) $error[5]=error('*');
    } else if(isset($_POST['sendMail'])) { $done=1; }
   
    if ($done) {
            mailto($_POST['navn'],$_POST['e-mail'],$ditNavn,$sendTo,$_POST['emne'],htmlspecialchars($_POST['besked']));
            session_unregister('imgkey');
            return $reply;
    } else {
        $antispam=$antiSpam?'<fieldset style="font-size:1em;">
    <legend>Anti-spam: Indtast bogstaverne du ser p&aring; billedet</legend>
<p>    <img src="'.$stiTilScript.'?action=code" alt="Billede" style="float:left;margin-right:10px;"/> <label><input type="text" id="mailform_kode" name="kode" maxlength="7" style="height:25px;margin:0;padding:0;width:5em"/>    &nbsp;'.$error[5].'</label></p>                           
</fieldset>':'';
    if ($subjectRestricted) {
        $tmp=split(',',$restrictedSubjects);
        $emne='<p><label><select name="emne" id="mailform_emne" >';
        foreach($tmp as $subject) {
            $emne.='<option value="'.$subject.'">'.$subject.'</option>';
        }
        $emne.='</select> Emne</label></p>';
    } else $emne='<p><label><input name="emne" id="mailform_emne" type="text"  value="'.$_POST['emne'].'"/> Emne '.$error[2].'</label></p>';
        $form='<!-- kontaktformular fra http://martin-nielsen.com-->
        '.$error[0].'
    <form action="" method="post" id="mailform_form" style="width:300px;">
       
        <p><label><input name="navn" id="mailform_navn" type="text"  value="'.$_POST['navn'].'"/> Navn '.$error[1].'</label></p>
        '.$emne.'
    <p><label><input name="e-mail" id="mailform_email" type="text"  value="'.$_POST['e-mail'].'"/> E-mail '.$error[3].'</label></p>
   
    <p><label>Besked    '.$error[4].'<br />
    <textarea name="besked" id="mailform_besked"  cols="40" rows="5">'.$_POST['besked'].'</textarea></label></p>
    '.$antispam.'
    <p><label>
    <input name="sendMail" type="submit" id="mailform_sendMail" value="Send e-mail"/></label></p>
    </form>';
    return $form;
    }
}

?>
Avatar billede fant0mas Nybegynder
11. marts 2008 - 08:37 #10
Nå okay, jeg troede du lavede noget ala include $_GET[filename].
Det er verboten :P
Avatar billede big_ossi Nybegynder
11. marts 2008 - 08:39 #11
men som sagt så består siden kun af php filer med tekst og en galleri som henter billeder ud fra en database.

Burde det stadig være muligt at sende de spam mails genne siden ?
Der står i de mals jeg får at misbruges foregår på adressen http://www.domain.dk/index.php?
Avatar billede big_ossi Nybegynder
11. marts 2008 - 08:41 #12
Fant0mas> Det har jeg gjort før i tiden og det lavede jeg om da de lukkede den igen efter kontakt formularen var fjernet.
Avatar billede showsource Seniormester
11. marts 2008 - 08:45 #13
Bruger du overhovedet mail() nogen steder på din side nu?
De gamle filer, ligger de stadig på serveren?
Avatar billede showsource Seniormester
11. marts 2008 - 08:47 #14
includefiler bør du anyway lægge i et dir som ingen har lov til at tilgå.
Så kan de kun hentes fra scripts på serveren.
Avatar billede big_ossi Nybegynder
11. marts 2008 - 08:52 #15
showsource> nej alle mail() er fjernet og der ligger ikke filer serveren som kan maile.

Men vil da prøve om lægge include filerne i undermappe som du siger.
Avatar billede showsource Seniormester
11. marts 2008 - 08:54 #16
Jamen hvis IKKE du bruger mail() er det vel næppe dine scripts som laver spammails, men derimod serveren som er sat forkert op, eller fordi spammails er forfalsket til at komme fra dig, og eller din mailkonto er "hacket"
Avatar billede showsource Seniormester
11. marts 2008 - 08:55 #17
Kan du iøvrigt bruge .htaccess ?
Avatar billede big_ossi Nybegynder
11. marts 2008 - 09:18 #18
Ved ikke helt. de sigerved supporten de kan se der er en masse mail trafik. men i mit ontrolpanel hvorman også kan se hvilken trafik jeg har på http, ftp og mai så er der ingen ud over den alm. mail trafik.

Men prøver lægge include i en undermappe og laver rettigheder så det kun er serveren der kan tilgå filerne.

Takker for jeres forslag og hjælp.

Hvis i gerne vil have points så er i velkommen til at svare.
Avatar billede showsource Seniormester
11. marts 2008 - 09:21 #19
Du må jo prøve at få noget mere info om hvordan de kan se at det er på dit domain, og hvordan de er sikre på der rent faktisk bliver sendt en masse mails.

Jeg er ikke til point.
Avatar billede big_ossi Nybegynder
03. juni 2008 - 12:28 #20
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester