Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

securitate include ()
Vezi mesajul original
Du-te la pagina 1, 2  Următoare
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> Cod PHP
Subiectul anterior :: Subiectul următor  
Autor Mesaj
berliotz



Data înscrierii: 01/Feb/2005
Mesaje: 4

Trimis: Vin Apr 18, 2008 2:38 pm    Titlul subiectului: securitate include ()  

Am in pagina de index functia include() pentru a include paginile componente. Cum fac sa impiedic includerea unor linkuri externe pentru a evita atacurile de tip remote?
Sus  
MihaiC



Data înscrierii: 14/Mai/2006
Mesaje: 999
Locație: Navodari

Trimis: Vin Apr 18, 2008 2:58 pm    Titlul subiectului:  

Fara prea multe detalii, ha ?!

Ce am inteles eu este ca tu ai ceva de genul include $_GET['pag'] si vrei sa nu ai probleme.
Pai...
Cod:
$pags = array ("x.html","y.html","z.html");

if(in_array($_GET['pag'],$pags)){
    include $_GET['pag'];
}else
    include "x.html";///o pagina default
Sus  
kyron



Data înscrierii: 16/Sep/2004
Mesaje: 521
Locație: Bucuresti

Trimis: Vin Apr 18, 2008 3:05 pm    Titlul subiectului:  

Cod:
<?php
switch ($_GET['page'])
{
      case 'pag1': include 'page1.php';break;
      case 'pag2': include 'page2.php';break;
      case 'pag3': include 'page3.php';break;

      default: include 'default.php';
}
?>
Sus  
joe_black



Data înscrierii: 03/Mai/2006
Mesaje: 31

Trimis: Vin Apr 18, 2008 3:16 pm    Titlul subiectului:  

Cod:
$myfile = basename($_GET['page']);
$myfile = preg_replace('#[^a-zA-Z0-9_\-]#','',$myfile);
$include_path = $myfile.".php";
if (is_readable($include_path))
{
    include ($include_path);
}


Cred ca asta e mai ok. Aia e prea hard coded.
Ce zici?
Sus  
berliotz



Data înscrierii: 01/Feb/2005
Mesaje: 4

Trimis: Vin Apr 18, 2008 3:38 pm    Titlul subiectului:  

Da, asta e . Multumesc tuturor, sper sa nu mai fie probleme....
Sus  
berliotz



Data înscrierii: 01/Feb/2005
Mesaje: 4

Trimis: Vin Apr 18, 2008 3:42 pm    Titlul subiectului:  

Revin - Codul meu era asa:
<? $pg = $_GET['pg'];
if ($pg == "")
{
$pg = $home;
include("$pg");
}
else
{
include ("$pg");
}
?>

si m-am trezit cu includeri de genul pg=link extern., asta vreau sa evit
Sus  
Amenthes



Data înscrierii: 12/Dec/2005
Mesaje: 238

Trimis: Vin Apr 18, 2008 10:20 pm    Titlul subiectului:  

Daca in php.ini allow_url_fopen si allow_url_include sunt Off nu o sa ai probleme. Decat niste warning-uri.
Sus  
kleampa



Data înscrierii: 10/Iul/2005
Mesaje: 1988
Locație: Bucuresti

Trimis: Sâm Apr 19, 2008 12:05 am    Titlul subiectului:  

e recomandat si if(file_exists())
Sus  
crivion



Data înscrierii: 10/Apr/2007
Mesaje: 531
Locație: Somewhere

Trimis: Sâm Apr 19, 2008 8:03 am    Titlul subiectului:  

cel mai bine faci un array cu paginile permise si pui un if(!in_array) daca pagina e diferita de cea permisa bagi un exit() si un refresh
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 2764
Locație: Targoviste City

Trimis: Sâm Apr 19, 2008 8:43 am    Titlul subiectului:  

asa cum zice crivion, poti sa faci o listare a directorului [nu e mare lucru, e prim manual] si pui intr-un array toate fisierele tale tale... apoi conditionezi daca se afla in acel array [orice fisier..] ;)
Sus  
berliotz



Data înscrierii: 01/Feb/2005
Mesaje: 4

Trimis: Lun Apr 21, 2008 12:12 pm    Titlul subiectului:  

Multumesc de sugestii tuturor, merge cu array-ul. Cat despre php.ini nu am eu acces la el....
Sus  
joe_black



Data înscrierii: 03/Mai/2006
Mesaje: 31

Trimis: Mar Apr 22, 2008 5:36 pm    Titlul subiectului:  

vectorialpx a scris: asa cum zice crivion, poti sa faci o listare a directorului [nu e mare lucru, e prim manual] si pui intr-un array toate fisierele tale tale... apoi conditionezi daca se afla in acel array [orice fisier..] ;)

procedura inutila

vectorialpx a scris:
cel mai bine faci un array cu paginile permise si pui un if(!in_array) daca pagina e diferita de cea permisa bagi un exit() si un refresh


cand adaugi pagina permisa iara modifici arrayu. probleme pot de kk aparea.
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1164
Locație: Sibiu

Trimis: Mie Apr 23, 2008 9:00 am    Titlul subiectului:  

joe_black, te rog elaboreaza. De ce ar fi procedura inutila?
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 2764
Locație: Targoviste City

Trimis: Mie Apr 23, 2008 3:07 pm    Titlul subiectului:  

vezi ca ultimul paragraf nu-mi apartine... ce ti se pare inutil daca iei fisierele din folder si conditionezi includerea DOAR a lor?

mie mi se pare nefunctionala varianta ta:

$myfile = basename($_GET['page']);
---> ok, iese fisier.php [sau, poate fi html.. de ce nu?]

$myfile = preg_replace('#[^a-zA-Z0-9_\-]#','',$myfile);
---> nu am inteles ideea, daca eu am un fisier cu numele "nume'neconventional asa.php" ce se intampla?

$include_path = $myfile.".php";
---> vei include fisier.php.php

if (is_readable($include_path)) {
--->eu zic ca nu va fi readable...
include ($include_path);
}

ideea mea e ca nu cel ce face site-ul lucreaza cu el... cel ce face site-ul trebuie sa se adapteze tuturor nevoilor, fara a pune clauze de genul "sa nu incluzi fisiere care contin *"
Sus  
Amenthes



Data înscrierii: 12/Dec/2005
Mesaje: 238

Trimis: Mie Apr 23, 2008 11:18 pm    Titlul subiectului:  

@vectorialpx: omul vrea sa automatizeze, ca de asta e programator, nu sa
stea sa puna o noua pagina in array de fiecare data cand mai creeaza inca una. Daca ai fi Yahoo! cam cat de mare ar fi array-ul ala?

E adevarat ca pentru un site-uletz mai mic merge chestia cu array-ul dar daca te complici e bine sa faci refactoring la felul in care incluzi paginile.

Si inca o chestie... tu in $_GET pui numele paginilor cu tot cu extensia de PHP?
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> Cod PHP Du-te la pagina 1, 2  Următoare
Pagina 1 din 2


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community