Avatar billede mccookie Seniormester
09. januar 2004 - 19:48 Der er 2 kommentarer og
1 løsning

Mail script - Sikkerhedstest

Hejsa eksperter

Jeg har lavet et script til at sende mail til nogle brugere via nettet i et kartotekssystem.

Jeg har en kolonne i min tabel kaldet unik, dette er en unik talkode som bruges til at vertificere hvem du ønsker at sende til og samtidigt kan man ikke bare ændre person_id i adresselinien.......

Jeg har brug for at høre lidt om forskellige faldgruber i mit script - Samt hvordan disse evt. afhjælpes......

mvh.
Henning

<?php
    // Header hentes og indsættes på siden
    include($_SERVER['DOCUMENT_ROOT'].'/lib/mainsite/header.php');
    require($_SERVER['DOCUMENT_ROOT'].'/lib/mainsite/vis_enhedens_ledere.php');   

    if (isset($_GET["action"])) { $action = $_GET["action"]; } else { echo "GET action ikke sat<br>";}
    if (isset($_POST["action"])) { $action = $_POST["action"]; } else { echo "POST action ikke sat<br>";}
    if (isset($_GET["ab_person_id"])) { $ab_person_id = $_GET["ab_person_id"]; } else { echo "GET ab_person ikke sat<br>";}
    if (isset($_POST["ab_person_id"])) { $ab_person_id = $_POST["ab_person_id"]; } else { echo "POST ab_person ikke sat<br>";}
    if (isset($_GET["unik"])) { $unik = $_GET["unik"]; } else { echo "GET unik ikke sat<br>";}
    if (isset($_POST["unik"])) { $unik = $_POST["unik"]; } else { echo "POST unik ikke sat<br>";}
    $fra = $_GET["fra"];
    $fra_email = $_GET["fra_email"];
    $subject = $_GET["subject"];
    $besked = $_GET["besked"];
    $person_id = $_GET["person_id"];

   
    switch ($action) {
       
    case send_mail:
   
open_database(strandboernedk);
   
    $sql = "SELECT *
        FROM ab_person, ab_adresse
        WHERE ab_person.ab_person_id = $ab_person_id
        AND ab_person.ab_person_id = ab_adresse.ab_person_id
        AND ab_adresse.aktiv = 1
        AND ab_person.unik = '$unik'";
    echo $sql;
      $resultat = mysql_query($sql) or die(mysql_error());   
          // Ved fejl skrives fejlen til skærmen
         
      while ($rowdata = mysql_fetch_array($resultat))  {

          extract($rowdata); 

          }   
         
    close_database();

    $message = $besked;

$from = "From: $fra <$fra_email>\r\n";
$reply = "Reply-To: $fra_email\r\n";

if (mail("$email","$subject","$message","$from"."$reply")) { echo "Succes"; };
// Der genereres en mail og sendes til $emailliste

    break;
   
    case writemail:
   
        open_database(strandboernedk);
   
    $sql = "SELECT *
        FROM ab_person, ab_adresse
        WHERE ab_person.ab_person_id = $ab_person_id
        AND ab_person.ab_person_id = ab_adresse.ab_person_id
        AND ab_adresse.aktiv = 1
        AND ab_person.unik = '$unik'";
       
    echo "$sql<br><br>";
      $resultat = mysql_query($sql) or die(mysql_error());   
          // Ved fejl skrives fejlen til skærmen
         
      while ($rowdata = mysql_fetch_array($resultat))  {

          extract($rowdata); 

          }   
         
    close_database();
       
    ?>
    <br><h2>Du vil gerne sende en email til: <br><?php echo "$fornavn $efternavn"; ?></h2>
    <?php
   
    $formstr  = "<form method=\"get\"";
    $formstr .= "action=\"";
    $formstr .= $_SERVER["PHP_SELF"];
    $formstr .= "?action=send_mail&ab_person_id=$ab_person_id";
    $formstr .= "\">";
   
    echo $formstr; ?>

    Dit navn: <input name=fra><br>
    Din email: <input name=fra_email><br>
    Emne: <input name=subject><br>
    Din besked: <textarea name=besked cols=60 rows=8></textarea>
    <input type=text name="ab_person_id" value=<?php echo $ab_person_id?>><br>
    <input type=text name="action" value="send_mail"><br>
    <input type=text name="unik" value="<?PHP echo $unik ?>">
   
    <br>Der kan ikke bruges HTML tags til at skrive mailen, den skal skrives som alm. plaintext.<br>
    <input value="Send email" type=submit> <input value="Slet" type=reset><?php
    break;

   
}

?>
Avatar billede mccookie Seniormester
09. januar 2004 - 20:02 #1
En lidt pænere version

<?php
    // Header hentes og indsættes på siden
    include($_SERVER['DOCUMENT_ROOT'].'/lib/mainsite/header.php');
    require($_SERVER['DOCUMENT_ROOT'].'/lib/mainsite/vis_enhedens_ledere.php');   


    // If sætningerne nedenunder, undersøger om der kommer input via $_GET eller $_POST
    // Kommer der data sættes variablen til værdien og dermed true. Dette betyder i praktisk
    // at der kan anvendes samme id.
   
    if (isset($_GET["action"]))
        { $action = $_GET["action"]; } else
        { echo "GET action ikke sat<br>";}
    if (isset($_POST["action"]))
        { $action = $_POST["action"]; } else
        { echo "POST action ikke sat<br>";}
    if (isset($_GET["ab_person_id"]))
        { $ab_person_id = $_GET["ab_person_id"]; } else
        { echo "GET ab_person ikke sat<br>";}
    if (isset($_POST["ab_person_id"]))
        { $ab_person_id = $_POST["ab_person_id"]; } else
        { echo "POST ab_person ikke sat<br>";}
    if (isset($_GET["unik"]))
        { $unik = $_GET["unik"]; } else
        { echo "GET unik ikke sat<br>";}
    if (isset($_POST["unik"]))
        { $unik = $_POST["unik"]; } else
        { echo "POST unik ikke sat<br>";}
       
    $fra      = $_GET["fra"];
    $fra_email = $_GET["fra_email"];
    $subject  = $_GET["subject"];
    $besked    = $_GET["besked"];
    $person_id = $_GET["person_id"];

    // Switch skifter mellem at skrive mailen eller sende den
       
    switch ($action) {
   
    // 1st case (Send)
       
    case send_mail:
   
    open_database(strandboernedk);
   
    $sql = "SELECT *
        FROM ab_person, ab_adresse
        WHERE ab_person.ab_person_id = $ab_person_id
        AND ab_person.ab_person_id = ab_adresse.ab_person_id
        AND ab_adresse.aktiv = 1
        AND ab_person.unik = '$unik'";
       
    echo $sql;
   
    $resultat = mysql_query($sql) or die(mysql_error());   
        // Ved fejl skrives fejlen til skærmen
         
    while ($rowdata = mysql_fetch_array($resultat))  {

        extract($rowdata); 

        }   
         
    close_database();

    $message = $besked;
    $from = "From: $fra <$fra_email>\r\n";
    $reply = "Reply-To: $fra_email\r\n";

    if (mail("$email","$subject","$message","$from"."$reply"))
        { echo "Succes: Sending mail"; };
        // Der genereres en mail og sendes til $emailliste

    break; // case END
   
   
    // 2nd case (Write)
   
    case writemail:
   
    open_database(strandboernedk);
   
    $sql = "SELECT *
        FROM ab_person, ab_adresse
        WHERE ab_person.ab_person_id = $ab_person_id
        AND ab_person.ab_person_id = ab_adresse.ab_person_id
        AND ab_adresse.aktiv = 1
        AND ab_person.unik = '$unik'";
       
    echo "$sql<br><br>";
   
    $resultat = mysql_query($sql) or die(mysql_error());   
        // Ved fejl skrives fejlen til skærmen
         
    while ($rowdata = mysql_fetch_array($resultat))  {
     
      extract($rowdata); 
      }   
         
    close_database();
       
?>
   
    <br><h2>Du vil gerne sende en email til: <br><?php echo "$fornavn $efternavn"; ?></h2>

<?php
   
    $formstr  = "<form method=\"get\"";
    $formstr .= "action=\"";
    $formstr .= $_SERVER["PHP_SELF"];
    $formstr .= "?action=send_mail&ab_person_id=$ab_person_id";
    $formstr .= "\">";
   
    echo $formstr; ?>

    Dit navn: <input name=fra><br>
    Din email: <input name=fra_email><br>
    Emne: <input name=subject><br>
    Din besked: <textarea name=besked cols=60 rows=8></textarea>
    <input type=text name="ab_person_id" value=<?php echo $ab_person_id?>><br>
    <input type=text name="action" value="send_mail"><br>
    <input type=text name="unik" value="<?PHP echo $unik ?>">
   
    <br>Der kan ikke bruges HTML tags til at skrive mailen, den skal skrives som alm. plaintext.<br>
    <input value="Send email" type=submit> <input value="Slet" type=reset><?php

    break; // Case END
}

?>
Avatar billede mccookie Seniormester
09. januar 2004 - 21:31 #2
Jeg har opdateret scriptet lidt......

Er der nogen risiko når der sendes fra en formular??
Og er jeg løbet ind i dem?

mvh.
Henning


<?php
    // Header hentes og indsættes på siden
    include($_SERVER['DOCUMENT_ROOT'].'/lib/mainsite/header.php');
    require($_SERVER['DOCUMENT_ROOT'].'/lib/mainsite/vis_enhedens_ledere.php');   


    // If sætningerne nedenunder, undersøger om der kommer input via $_GET eller $_POST
    // Kommer der data sættes variablen til værdien og dermed true. Dette betyder i praktisk
    // at der kan anvendes samme id.
   
    if (isset($_GET["action"]))
        { $action = $_GET["action"]; } else
        { }// echo "GET action ikke sat<br>";
    if (isset($_POST["action"]))
        { $action = $_POST["action"]; } else
        { }// echo "POST action ikke sat<br>";
    if (isset($_GET["ab_person_id"]))
        { $ab_person_id = $_GET["ab_person_id"]; } else
        { }// echo "GET ab_person ikke sat<br>";
    if (isset($_POST["ab_person_id"]))
        { $ab_person_id = $_POST["ab_person_id"]; } else
        { }// echo "POST ab_person ikke sat<br>";
    if (isset($_GET["unik"]))
        { $unik = $_GET["unik"]; } else
        { }// echo "GET unik ikke sat<br>";
    if (isset($_POST["unik"]))
        { $unik = $_POST["unik"]; } else
        { }// echo "POST unik ikke sat<br>";
       
    $fra      = strip_tags($_GET["fra"]);
    $fra_email = strip_tags($_GET["fra_email"]);
    $subject  = strip_tags($_GET["subject"]);
    $besked    = strip_tags($_GET["besked"]);
    $person_id = $_GET["person_id"];

    // Switch skifter mellem at skrive mailen eller sende den
       
    switch ($action) {
   
    // 1st case (Send)
       
    case send_mail:
   
    open_database(strandboernedk);
   
    $sql = "SELECT *
        FROM ab_person, ab_adresse
        WHERE ab_person.ab_person_id = $ab_person_id
        AND ab_person.ab_person_id = ab_adresse.ab_person_id
        AND ab_adresse.aktiv = 1
        AND ab_person.unik = '$unik'";
       
    // echo $sql;
   
    $resultat = mysql_query($sql) or die(mysql_error());   
        // Ved fejl skrives fejlen til skærmen
         
    while ($rowdata = mysql_fetch_array($resultat))  {

        extract($rowdata); 

        }   
         
    close_database();

    $message = $besked;
    $from = "From: $fra <$fra_email>\r\n";
    $reply = "Reply-To: $fra_email\r\n";

    if (mail("$email","$subject","$message","$from"."$reply"))
        { echo "Succes: Sending mail"; };
        // Der genereres en mail og sendes til $emailliste

    break; // case END
   
   
    // 2nd case (Write)
   
    case writemail:
   
    open_database(strandboernedk);
   
    $sql = "SELECT *
        FROM ab_person, ab_adresse
        WHERE ab_person.ab_person_id = $ab_person_id
        AND ab_person.ab_person_id = ab_adresse.ab_person_id
        AND ab_adresse.aktiv = 1
        AND ab_person.unik = '$unik'";
       
    // echo "$sql<br><br>";
   
    $resultat = mysql_query($sql) or die(mysql_error());   
        // Ved fejl skrives fejlen til skærmen
         
    while ($rowdata = mysql_fetch_array($resultat))  {
     
      extract($rowdata); 
      }   
         
    close_database();

   
    $formstr  = "<form method=\"get\"";
    $formstr .= "action=\"";
    $formstr .= $_SERVER["PHP_SELF"];
    $formstr .= "?action=send_mail&ab_person_id=$ab_person_id";
    $formstr .= "\">";
   
    echo $formstr; ?>

    <table width=100% border=1>
   
    <tr>
      <td colspan=3 align=center><h2>Du vil gerne sende en email til:<br> <?php echo "$fornavn $efternavn"; ?></h2></td>
    </tr>
    <tr>
      <td>Dit navn:</td><td><input name=fra size=40></td>
    </tr>
    <tr>
      <td>Din email:</td><td><input name=fra_email size=40></td>
    </tr>
    <tr>
      <td>Emne:</td><td><input name=subject size=40></td>
    </tr>
    <tr>
      <td>Din besked:</td><td><textarea name=besked cols=60 rows=8></textarea></td>
    </tr>
    <tr>
      <td align=center colspan=2><input value="Send email" type=submit> <input value="Slet ALT" type=reset> <input type="button" value="Luk dette vindue" onClick="window.close();">
   
    </table>
   
    <input type=hidden name="ab_person_id" value=<?php echo $ab_person_id?>><br>
    <input type=hidden name="action" value="send_mail"><br>
    <input type=hidden name="unik" value="<?PHP echo $unik ?>">
       
    <br>Der kan ikke bruges HTML tags til at skrive mailen, den skal skrives som alm. plaintext.<br>
    <?php

    break; // Case END
}

?>
Avatar billede mccookie Seniormester
29. marts 2004 - 23:03 #3
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