Undgå at folk linker til billeder
Hvis man vil undgå at folk linker til ens billeder eller videoer, kan man med mod_rewrite kigge på Referer-headeren, og se om brugeren kommer fra ens eget domæne
Her viser jeg hvordan man nægter adgang til .png-filer hvis folk ikke kommer fra www.example.com
1 2 3 | RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://www.example.com/ RewriteRule \.png$ – [F] |
[F] betyder Forbidden.
Det hjælper selvfølgelig ikke mod de folk der selv kan finde ud af at sætte Referer-headeren, men det hjælper mod almindelige browsere.
Spore hvilke links brugeren trykker på
I nogen tilfælde vil jeg holde styr på hvilke links brugeren trykker på når vedkommende forlader min side. Normalt vil jeg løse dette ved at tilføje et proxy-script der sender videre. Fx:
<a href="redir.php?url=http://mbn.dk">mbn.dk</a>
Det gi’r dog nogle grimme adresser, og problemer hvis brugeren fx vil kopiere adressen og bruge den andre steder.
En løsning som jeg synes er pænere er at bruge noget Javascript der kigger på de events browseren fyrer af når man trykker på et link. Eks:
<script type="text/javascript"> $(document).ready(function() { $("a[target=_blank]").mousedown(function() { $.post("link_tracker.php", { url: $(this).attr("href") } ); }); }); </script>
Efterfølgende skal link_tracker.php samle $_POST['url'] op og behandle den …
Bemærk at jeg kun matcher de events hvor target-attributten er sat til “_blank”. Jeg kan måske ved fordel matche på alle links, og så checke om de starter med “http://”. Jeg matcher på mousedown og ikke click af den simple årsag at mousedown matcher mere. Fx midterklik. Dog matcher den ikke hvis man trykker på linket via tastatur, men koden kan nemt udvides til at tage højde for de senarier.
Ovenstående kræver jQuery som jeg loader via:
<script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("jquery", "1.3"); google.load("jqueryui", "1.7"); </script>

Jeg hedder Morten, og jeg har udviklet webapplikationer siden slutningen af 90'erne.