Oplossingen

[1] Controleren: wat komt er in
Zorg dat je afvangt wat er binnenkomt, en alleen bestanden die jij hebt opgegeven kan includen. Zorg dat je de files die je wilt includen in een bepaalde map zet en de map opneemt in de include:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
$map
= "htmlbestanden";
$bestand = $_GET['bestand'];
include("${map}/$bestand");
?>


Dit maakt de http bug onmogelijk, maar maakt het nog steeds mogelijk om andere bestanden van je eigen site willekeurig te includen.

Bijvoorbeeld als er als $bestand een map als "../../ditbestand.php" opgegeven wordt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?
$map
= "htmlbestanden";
$bestand = $_GET['bestand'];
$bestand = preg_replace("/\W/","", $bestand);
// Verwijderd alle niet-alfanumerieke tekens. Hierdoor kan alleen het begin van een filename in de variabele $bestand staan.

include("${map}/${bestand}.extensie");
?>


[2] Het gebruik van readfile() in plaats van include
Door het gebruik van readfile zal elke file enkel als tekst worden gezien, en niet als php gelezen en uitgevoerd worden. Dus wanneer het niet nodig is om php uit te voeren: gebruik readfile()!

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Include(): het 'lek'
  2. Oplossingen

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.