[ Team LiB ] |
Recipe 5.13 Denying Access to Unreferred RequestsProblemYou want to prevent other web sites from using your images (or other types of documents) in their pages and allow your images to be accessed only if they were referred from your own site. SolutionPut this in your httpd.conf: RewriteEngine On RewriteCond %{HTTP_REFERER} !="" RewriteCond %{HTTP_REFERER} "!^http://mysite.com/.*$" [NC] RewriteCond %{REQUEST_URI} "\.(jpg|gif|png)$" RewriteRule .* - [F] DiscussionThis recipe is a series of RewriteCond directives, designed to determine whether an image file is requested from within a document on your site or if it is embedded in a page from another server. If the the latter, then the other site is stealing your images and needs to be stopped. The first rule checks to see if the referer is even set. Some clients don't send a referer, and some browsers can be configured not to send referers. If we deny requests from all clients that don't send a referer, we'll deny a lot of valid requests; so we let these ones in. Next, we check to see if the referer appears to be from some site other than our own. If so, we keep going through the rules. Otherwise, we'll stop processing the rewrite. Finally, we check to see if this is a request for an image file. If the file is a nonimage file, such as an HTML file, then we want to allow people to link to these files from somewhere offsite. If we've reached this point in the ruleset, we know that we have a request for an image file from within a page on another web site. The RewriteRule matches a request and returns Forbidden to the client. See Also |
[ Team LiB ] |