09. november 2021 - 16:21Der er
7 kommentarer og 1 løsning
Dynamisk hjemmeside
Har nu oplevet et forsøg fra en hacker på at sende en SMTP- mail fra response-delen af en dynamisk hjemmeside. Mailen er af typen nn@domæne.dk til nn@domæne.dk. Mailen er heldigvis afvist af webhotellets spamfilter. Der er brugt samme teknik, som den dynamiske hjemmeside selv anvender når der sendes mails som svar på en bestilling.. Mailen indeholder den sædvanlige trussel om porno-kikkeri og krav om dusær i bitcoins. Hører gerne fra andre, der kender til dette fænomen.
Hvad vil du gerne høre noget om? Overordnet set er det ganske vanskeligt at undgå den slags. Særligt hvis formen er sat op gennem et udbredt CMS-system, eftersom spambots'ene ofte er tilpasset til netop disse.
Jeg har i visse sammenhænge haft held med at reducere antallet af sådanne, ved at indbygge et eget "hack" i koden, i form af at tilføje et ekstra felt, der skal udfyldes, og som ikke passer til standard-virkemåden. Men dette er naturligvis kun relevant, hvis formen er sat op omkring et CMS-system, og emailsene er sendt af spambots. Hvis der sidder en konkret person, og afskiber emailsene, er det næsten umuligt at undgå.
Det første der falder mig ind er at skride til at ændre på koderne i programmeringen, men det har vel egentlig ikke nogen virkning overfor uautoriseret brug af programmeringen. Oprindelig havde vi en meget simplere mailfunktion på hjemmesiden, men den blev forkastet af det webhotel, vi den gang brugte. Derfor tyede jeg til en anden model med SMTP, som jeg blev rådet til i denne glimrende konference. Den har da også fungeret fejlfrit i rigtig mange år. Mit eksempel er det første forsøg, som heldigvis blev opfanget af webhotellets beskyttelse. Foreløbig vil jeg nok ikke ændre noget med mindre, der kommer flere forsøg på misbrug. Men et eksempel på et ekstra "hack" vil jeg da gerne se.
"Hack" mente jeg i den oprindelige betydning af ordet: Så hvis din mailform er lavet i et CMS kan man ofte fjerne 99% af alt spam ved at man hardcoder et ekstra inputfelt i php-koden, fordi så dør alle de automatiserede spambots.
Men da det ikke lyder til at det er mængden af spam, men mere karakteren, du er bekymret om, så tror jeg ikke dén løsning er vejen frem.
Det er sådan, at det lille firma, jeg arbejder for, ikke vil kunne tåle et hackerangreb, der måske lukker al kommunikation. Fx kunne vi købe en betalingssluse i stedet for bestillingerne på hjemmesiden. Det rækker økonomien bare ikke til. Der må krydses fingre for, at spam-en er en enlig svale og at jeg evt kan programmere mig ud af problemet. Angående felter i formularen så er der faktisk en del ekstra felter ud over de sædvalige med navn, adresse, telefon osv.
Ok, hvis dét er problemet, så tænker jeg, at dit primære fokuspunkt må være at rense emails for potentiel skadelig kode (anti-injection). Det kan du gøre ved at bruge sanitize-funktionerne (se på filter_var). Og holde øje med header-injection. Evt. bruge phpmailer, som har indbygget header-injection prevention: https://github.com/PHPMailer/PHPMailer
Jeg benytter netop class.phpmailer.php og class.smtp.php. man kan se mail-de len af min response her: toppen: <?php header($return_page); header('Content-type: text/html; charset=utf-8'); function createNewUser() { if(isset($_POST['submit'])) { return FALSE; } ------------(forskellige check-funktioner) og mail-delen: require_once('class.phpmailer.php'); include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded $mail = new PHPMailer(); //$body = $mail->getFile('contentsbp.php'); //$body = eregi_replace("[\]",'',$body); $mail->IsSMTP(); // telling the class to use SMTP $mail->Host = "smtp.webhosting.dk"; // SMTP server $mail->SMTPDebug = 2; // enables SMTP debug information (for testing) // 1 = errors and messages // 2 = messages only $mail->SMTPAuth = true; // enable SMTP authentication $mail->Host = "smtp.webhosting.dk"; // sets the SMTP server $mail->Port = 2525; // set the SMTP port for the GMAIL server $mail->Username = "info@domæne.dk"; // SMTP account username $mail->Password = "xxxxxxxxx"; // SMTP account password $mail->From = "info@domæne.dk"; $mail->FromName = "firma"; $mail->AddReplyTo("firma@firma.dk","firma"); //$mail->AddCC($email, "kunde"); $address = "$email"; $mail->AddAddress($address); $mail->AddBCC("info@domæne.dk", "firma"); $mail->Subject = ($_POST['subject']);
} else { echo "<h3> Formularen er nu sendt til firma fra <br/>".$navn." " .$adresse. " ".$postnummer. " ".$by. ". <br/> En e-mail er sendt til " .$email." <br/>som kvittering for din ".$emne. " <br/> <Venlig hilsen\n\r</h3><h1>firma</h1>"; } } }
if (some_error) { return 'Der skete desværre en fejl - .'; }
return true; }
$error = ''; if (isset($_POST['context'])) { switch ($_POST['context']) { case 'opret': $res = createNewUser(); if (is_string($res)) $error = $res; break;
Undskylder at jeg har sendt det meste af min kode. Jeg håbede at få et hint om, at der er et sted i koden, hvor en forbedring måske kunne gøre den mere "vandtæt" for uhensgtsmæssig brug. Jeg venter lige et par dage, hvorefter jeg lukker tråden, Tak til Eivindh for interessen.
Jeg vil tro, at phpmailer indeholder meget af det sikkerhed, der skal til. Jeg har ikke brugt den selv, så derfor vil jeg ikke udtale mig skråsikkert. Det er naturligvis så afgørende hele tiden at bruge den nyeste version af værktøjet.
Synes godt om
Ny brugerNybegynder
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.