Oftast är det tillräckligt att döpa om filerna till något obskyrt, tror ingen kommer hitta en bild som har filnamnet "d41d8cd98f00b204e9800998ecf8427e.jpg" - men det stoppar fortfarande inte spridning av länken, dvs bara dom har länken kan vem som helst kolla på bilden.
Har du tillgång till dynamiskt innehåll så kan du rendera en bild via en t ex en asp eller php sida genom att först kolla att användaren är behörig därefter skicka ut headers för att visa t ex en JPEG-fil och sen skriva ut innehållet i bildfilen.
Lite snabbt i PHP får jag det till detta:
// bild.php
// Är användaren inloggad?
if (isset($_SESSION['userid']) // Vi använder sessions i det här fallet
{
// Rendera en JPEG-fil
header("Content-type: image/jpeg");
print file_get_contents("/var/images/bild1.jpeg");
}
else
{
die("Du har inte tillåtelse att vissa denna bild.");
}
Går man in på bild.php och är inloggad ser man bilden, annars får man upp att man inte har tillåtelse. Sen kan du med hjälp av t ex mod_rewrite skriva om urlen så att addressen "bild.jpeg" igentligen kör "bild.php".
På så sätt kan du lägga bilder utanför webrooten där du bara kommer åt dem från serversidan (mao kan klienterna inte bläddra sig fram till bilden).
Detta förutsätter dock att alla som vill se bilden måste vara inloggade.