| 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 |
|
| |