PHP funkce include() a bezpečnost

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: rytir_s_plnovousem
Datum: 4.6.2006
Hodnocení/Hlasovalo: 0/0

Zkušení webmastři a hackeři určitě vědí, co všechno lze nepáchat nesprávně napsanou funkcí include(). V tomto článku se nebudu zabývat tím, jak tuto funkcni zneužít, ale jak ji správně zabezpečit.

Zkušení webmastři a hackeři určitě vědí, co všechno lze napáchat nesprávně napsanou funkcí include(). V tomto článku se nebudu zabývat tím, jak tuto funkcni zneužít, ale jak ji správně zabezpečit.

Předpokládám znalosti HTML, takže vytvořit jednuduchou šablonu by neměl být problém - vytvoříme si menu a vedle něj bude místo pro samostatný obsah - místo něj přijde tento skript:

<?php

//pokud jsme z URL dostali pozadavek na stranku,
//pokusime se ji zobrazit
if(!empty($_GET['page'])) {

  //osetrime retezec proti pripadnym pokusum o hacking
  $main_page = eregi_replace('[^0-9a-z\-\_]', '', $_GET['page']);

  //zobrazime pozadovanou stranku
  switch ($main_page) {
    default: include('includes/home.php'); break;
    case "home": include('includes/home.php'); break;
    case "articles": include('includes/articles.php'); break;
    case "downloads": include('includes/downloads.php'); break;
  }
}
//jinak zobrazime vychozi
else include('includes/home.php');

?>

Počítám s tím, že includované soubory opravdu existují, jinak určitě není problém si doplnit podmínku ;) Tento skript je prakticky neprůstřelný, možná pro některé je ošetřování řetězce zbytečné, ale určitě to přidává na jistotě...

by rytir_s_plnovousem