tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
1595
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    PHP-Fan PHP-Fan ist offline Mitglied Gold
    Registriert seit
    Jun 2005
    Beiträge
    171
    Hallo,

    ein Kollege hat mich auf eine sehr große Sicherheitslücke auf meiner Seite hingewiesen. Und zwar kann man per Include externe Seiten auf meiner Anzeigen und dadurch ist das hacken möglich.

    Meine Frage: Ist es möglich das Includen von externen Seiten (zuverlässig) zu sperren? Oder sollte ich lieber eine sicherere Alternative wählen? (Welche?).

    Meine Includ INDEX sieht so aus:

    PHP-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Greatest Deejays</title>

    <link rel="stylesheet" type="text/css" href="style.css" />
    </head>

    <body>
    <div id="container">
    <table width="820" border="0" cellpadding="0" cellspacing="0">
    <tr><td width="695">
    <table width="695" border="0" cellpadding="0" cellspacing="0">
    <tr><td width="695">
    <img src="Bilder/index1d_01.gif" width="695" height="26" border="0" alt=""></td>
    </tr>
    <tr>
    <td width="695">
    <table width="695" border="0" cellpadding="0" cellspacing="0"  background="Bilder/bg.gif">
    <td width="175" valign="top"><p><img src="Bilder/index1d_03.gif" width="175" height="156" border="0" alt="">
    </p>
        <p>&nbsp;</p>
        <table width="175" border="0" cellpadding="0" cellspacing="0"><tr><td width="12"></td><td width="163">

    <div id="navi">
     <div class="menuhead">.: Allgemein </div><br>
        <div class="menuItem"><a href="index.php">&nbsp;&nbsp; » Startseite </a></div>
          <div class="menuItem"><a href="index.php?site=dls.php">&nbsp;&nbsp; » Downloads </a></div>
        <div class="menuItem"><a href="index.php?site=release_infos.php">&nbsp;&nbsp; » Release Infos </a></div>
        <div class="menuItem"><a href="index.php?site=main.php&open=search">&nbsp;&nbsp; » Suche</a></div>
          <div class="menuItem"><a href="index.php?site=gb.php">&nbsp;&nbsp; » <b>Gästebuch</b> </a></div>
          <div class="menuItem"><a href="index.php?site=links.php">&nbsp;&nbsp; » Links </a></div>
          <div class="menuItem">&nbsp;</div>

    <div align="center">
    <div class="menuItem"><iframe src="check_users.php" frameborder=0 width="165" height="12" name="users"></iframe></div>
    <div class="menuItem">&nbsp;</iframe></div>

    </td></tr></table></div>
    </td><td width="520" valign="top"><img src="Bilder/content.gif" width="520" height="16" border="0" alt=""><table width="520" border="0" cellpadding="0" cellspacing="0"><tr><td width="25"></td><td width="480"></center><?
    $site 
    = (isset ($_REQUEST['site'])) ? $_REQUEST['site'] : '';
    $host=$_SERVER['HTTP_HOST'];

    if(
    $site=="") {
    // News System Include

    include("http://$host/main.php?open=news");

    }
      else {
                include(
    $site);
    }
    ?>

    </td><td width="15"></td></tr></table> </td></tr></table>
    </td></tr>
    <tr><td valign="top"><img src="Bilder/footer.gif" width="695" height="72" border="0" alt=""> </td></tr></table></td><td width="125" valign="top"><TABLE WIDTH="125" BORDER="0" CELLPADDING="0" CELLSPACING="0" background="Bilder/naviright_02.gif" bgcolor="#FFFFFF">
        <TR>
            <TD>
                <IMG SRC="Bilder/naviright_01.gif" WIDTH=125 HEIGHT=32 ALT=""></TD>
        </TR>
    <tr><td><TABLE WIDTH="125" BORDER="0" CELLPADDING="0" CELLSPACING="0"><tr><td width="15"></td><td width="95"><?
    require("http://$host/main.php?open=newest5"); ?>
    </td><td width="15"></td></tr></table></td></tr>
        <TR>
            <TD>
                <IMG SRC="Bilder/naviright_03.gif" WIDTH=125 HEIGHT=28 ALT=""></TD>
        </TR>
    </TABLE></td></tr></table>    </div>

    </BODY>
    </HEAD
    ></HTML>
    Geändert von PHP-Fan (11.06.06 um 14:38 Uhr) Grund: Was falsch formatiert
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Du solltest, bspw. per switch, selbst festlegen, welche Dateien includet werden können
    Beispiel:
    PHP-Code:
    switch($site)
      {
        case 
    'bla':
          include(
    "http://$host/main.php?open=bla");
            break;
        case 
    'blubb':
          include(
    "http://$host/main.php?open=blubb");
            break;
        default:
          include(
    "http://$host/main.php?open=news");


    Es ist übrigens sehr unpassend, Dateien über HTTP anzufordern.... dadurch explodiert dein Traffic, weil deine eigenen Dateien wie fremde behandelt werden.
    Ist schon klar, dass es sein muss, wenn du Parameter per URL übergeben willst, aber verzichte lieber drauf und definiere stattdessen eine Variable $open im Skript, darauf kann die main.php dann zugreifen sobald sie includet wurde.
     

  3. #3
    PHP-Fan PHP-Fan ist offline Mitglied Gold
    Registriert seit
    Jun 2005
    Beiträge
    171
    Zitat Zitat von Sven Mintel
    Du solltest, bspw. per switch, selbst festlegen, welche Dateien includet werden können
    Beispiel:
    PHP-Code:
    switch($site)
      {
        case 
    'bla':
          include(
    "http://$host/main.php?open=bla");
            break;
        case 
    'blubb':
          include(
    "http://$host/main.php?open=blubb");
            break;
        default:
          include(
    "http://$host/main.php?open=news");


    Es ist übrigens sehr unpassend, Dateien über HTTP anzufordern.... dadurch explodiert dein Traffic, weil deine eigenen Dateien wie fremde behandelt werden.
    Ist schon klar, dass es sein muss, wenn du Parameter per URL übergeben willst, aber verzichte lieber drauf und definiere stattdessen eine Variable $open im Skript, darauf kann die main.php dann zugreifen sobald sie includet wurde.
    Vielen Dank erst eimmal. Obereres habe ich hoffentlich verstanden und werde ich gleich mal ausprobieren.

    Letzteres habe ich auch verstanden weiß aber nicht ganz wie ich das umsetzen sollte. Vielen Dank schonmal für deie Tipps!

    Schöne grüße aus Düsseldorf
     

  4. #4
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Arbeite am besten mit deaktivierte allow_url_fopen“-Konfigurationsoption. Damit sind Anfragen außerhalb des Servers außer mit der fsockopen()-Funktion nicht mehr möglich. Zusätzlich könntest du noch prüfen, ob die einzubindende Datei lokal existiert (siehe file_exists()-Funktion).
     
    Markus Wulftange

  5. #5
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Zitat Zitat von PHP-Fan
    Letzteres habe ich auch verstanden weiß aber nicht ganz wie ich das umsetzen sollte. Vielen Dank schonmal für deie Tipps!
    Mal vorrausgesetzt, du willst immer die main.php includen...würde es so aussehen:
    PHP-Code:
    switch($site)
      {
        case 
    'bla':
          
    $open='bla';
            break;
        case 
    'blubb':
          
    $open='blubb';
            break;
        default:
          
    $open='news';
      }  
    include(
    'main.php'); 
    in der main.php hättest du dann die Variable $open verfügbar...anhand der du dann fortfahren kannst.
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 28.05.08, 15:11
  2. PHP Seiten sicher includen
    Von starfoxfs im Forum PHP
    Antworten: 5
    Letzter Beitrag: 11.02.08, 10:52
  3. Seiten includen per Link?
    Von SasserVirus im Forum PHP
    Antworten: 2
    Letzter Beitrag: 27.07.07, 01:24
  4. Antworten: 3
    Letzter Beitrag: 10.09.06, 13:29
  5. Seiten aus der Datenbank includen...
    Von weightwatcher im Forum PHP
    Antworten: 2
    Letzter Beitrag: 18.12.04, 20:20