v2.5.2
Giriş yap

PHP ile url gizleme ve engelleme

rennie
3,372 defa görüntülendi

Sorum şu:

PHP ile yaptığım basit ftp sisteminde dosya düzenleme işlemi yapıyorum. Ama bir noktada takıldım ve yapamadım.

Düzenleme yaparken url'e şu şekilde çıkıyor:
http://localhost/ftp3.php?id=../../../../home/sv/port27/sv1/config.cfg
Buradaki ../../../../home kısını istediğim gibi değiştirip, sistemin diğer dosyalarında erişebiliyorum. Bunu nasıl engelleyebilirim.
Örneğin:
http://localhost/ftp3.php?id=../../../../etc/php.ini

Birde bunu url'e kısmını daha farklı nasıl yapabilirim.

Bu konuda bana yardımcı olabilecek arkadaşların yardımlarını bekliyorum

Email: [email protected]

Teşekkür ederim.

@tayfunerbilen

Cevap yaz
Cevaplar (8)
makifgokce
1270 gün önce

bunu dene

case 'edit':
    $path = "../../../../home/".$kadim."/cstrike";
    $url = $path . '/' . str_replace('..', null, $_GET['f']);
    $dosyaAdi .= $url;
    $ac=fopen($url, "r");
    while (!feof($ac)) {
        $satir.= fgets($ac);
    }
break;
rennie
1270 gün önce

Cevap için teşekkür ederim. Dediğin şekilde yaptım. Peki diyelim
op-webftp?act=open&dir=../../../../ect şeklinde bir deneme yapıldı nasıl
op.webftp sayfasına yönlendirebilirim...

rennie
1270 gün önce

Evet aynı sorun.. Ara vermek zorunda kaldım..

aslında Tayfun hocanının dediğini yaptım ama bu sisteme entegre edemedim.

makifgokce
1270 gün önce

@rennie
öncelikle sorunuz 316 gün öncekiyle aynı mı?
ve paylaştığınız kodların düzgün gözükmesi için

    ```php
        // buraya kodları gelecek
    ```

bu şekilde yazmalısın.
buradaki makalede daha detaylı öğrenebilirsin.

rennie
1270 gün önce
switch ($_GET['act']){  
default:
$dir = "../../../../home/".$kadim."/cstrike";

$dosyalar = glob($dir."/*");
foreach ($dosyalar as $listele) {
if(is_dir($listele)){ 

}
}
break;

case 'open':
$dir="../../../../home/".$kadim."/cstrike/".$_GET['dir'];

}

}
break;

case 'edit':
$f="../../../../home/".$kadim."/cstrike/".$_GET['f'];
$dosyaAdi .= $f;
$ac=fopen($f, "r");
while (!feof($ac)) {
$satir.= fgets($ac);
}

break;

}
rennie
1566 gün önce

Cevap için teşekkür ederim. Deneyeceğim.

tayfunerbilen
1566 gün önce

sen bi base path belirleyeceksin. Örneğin;

$path = 'var/www/html';
$url = $path . '/' . str_replace('..', null, $_GET['url']);
echo $url;

çağırırkende şöyle çağıracaksın;
http://siteadi.com/?url=app/init.php

böylece şu şekilde denese bile çalışmayacak;
http://siteadi.com/?url=../../app/init.php

rennie
1567 gün önce

Soru güncel!