Gå til innhold

Emailscript - sikkert?


Anbefalte innlegg

Hei!

Er veldig ny med PHP, og har i det siste jobbet litt med mitt eget mailscript.

Tingen er at jeg har lest litt rundt om og skjønt at mange mailscript skrevet i PHP ikke er så sikre og kan lett missbrukes.. og da blir jeg urolig selvsakt..

Så jeg lurte bare på hvor sikkert dette scriptet er og hva som muligens kan utnyttes..

 

Bruksområde / Intro:

 

Jeg skrev dette med tanke på bruk av YubNub Commandline tools.

"Send" funksjonen i YubNub fungerer på den måten at den sender en mail til din spesifiserte mottaker. Problemet er at denne mailen (pga. avsenderadressen) ender opp i junkmail folderen hos de fleste mottakere. Jeg hadde heller ikke noe behov for å være anonym hvis jeg skulle sende korte meldinger.

 

Workaround var da å bruke mitt eget domene og bruke "!"- funksjonen(for private funksjoner, via yahoo search).

 

Bruksmåte: ! send [email protected] Passord Alt som kommer etter det 2.ord blir brødtekst i mailen.

 

Som nevnt over er jeg veldig ny i PHP og de fleste finner denne koden sikkert veldig rotete..

 

  

<?php

/* 
Php QuickMailer by Delroton. Version 0.3
For Private use only. Support @ [email protected]
This script is a simle one designed to work with YubNub commandline tools
How this script works: simply enter the url /[email protected] PASSWORD Followed by the message you want to send.
Then by simply using Yahoo's custom search you can easily replace it with YubNub's "SEND" command.

**************************************************************************************************

 FLAWS / SECURITY ISSUES:

* Password is input in cleartext.

CHANGELOG:

New Version in the works.. - delroton 11.02.2010
*/

//Code start:
$text = $_GET["mailer"];
$adress = explode(" ", $text);
$email = $adress[0];
$passwd = $adress[1];
$body = str_replace($email . " " . $passwd, " ", $text);
$subject = "Message sent using Quick Mail v0.3";
//Configure From adress
$headers = "From: \"Ola Nordmann\" <[email protected]>";


// Password check, ALTER THIS TO YOUR PERSONAL AND PRIVATE PASSWORD
if($passwd == "secret") 
{
//send mail if password was correct
mail($email, $subject, $body, $headers);   
//echo results
echo "<b> Hi! Your following email has been sent:</B>";
echo "";
echo "<hr /></br>";
echo "<b>To:</b> $email";
echo "</br>";
echo "<b>Subject:</B> $subject";
echo "</br>";
echo "<b>Body:</b> $body";
echo "</br>";
echo "<hr /><b>Sent $headers<b>";

}
//If password check fails:
else
{
echo "Password Check failed!";
echo "<br>";
echo "Please authorize yourself using the correct method.";
echo "<br>";
echo "<i> Having a bad day? </i>";
}
//end of code
?>

Endret av Delroton
Lenke til kommentar
Videoannonse
Annonse

escape_strings ville vært jævlig praktisk dersom det faktisk var databaser involvert. Ellers ser det ut som at hvem som helst relativt enkelt kan utnytte scriptet ditt til å sende uendelig mengder mail til hvem enn man måtte ønske.

 

Edit: Nevermind, ser nå at du har passordbeskyttet det.

Endret av Jonas
Lenke til kommentar

Bare noen generelle kommentarer.

 

//send mail if password was correct
mail($email, $subject, $body, $headers);   
//echo results

Dette forutsetter at mail alltid er vellykket/blir sent, og du vil få beskjed om at e-posten er sent selv om mail() returnerer FALSE. Dette løser du f. eks slik

//send mail if password was correct
if (mail($email, $subject, $body, $headers))   
 //echo mail sent
else
 // echo mail was not sent

 

Hvis du er opptatt av standard kompatibel html så er det litt lett blanding og små rusk i koden din. F. eks </br> skal være <br> eller <br /> avhengig av standard. Html skal vel også være i lower case.

 

 

echo "<b>Subject:</B> $subject";

Når du inkluderer variabler i tekst strenger slik som her (over), så bør du sette { } rundt variablene. Det gjør det enklere for php å forstå hvor de begynner og slutter. Men det fungerer ofte greit uten, så dette er pirk.

echo "<b>Subject:</B> {$subject}";

// alternativt bruk konkatinering
echo "<b>Subject:</B>".$subject;
echo "<b>Subject:</B>".$subject."<br />";

Endret av Crowly
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...