[web开发] 防盗链系列二:lighttpd mod_secdownload 模块实现防盗链
2008年07月15日 星期二 17:10
转载请说明该文章来自smallfish博客,
http://hi.baidu.com/smallfish7788,谢谢!
无意中在google搜索到lighttpd的这个模块。立即到本子上尝试了一番,效果貌似不错。
官方wiki说明:
http://trac.lighttpd.net/trac/wiki/Docs:ModSecDownload
这个模块在编译时已经默认安装了,需要都只是修改下配置。具体如何编译和安装请百度或google下。
按照以下修改lighttpd.conf:
server.modules = (...,"mod_secdownload",...) # 加上该模块
secdownload.secret = "abc" # 密钥,在你后面都程序要用到
secdownload.document-root = "/home/www/down/" # 真实文件路径,尽可能在web服务器之外
secdownload.uri-prefix = "/down/" # 访问时uri前缀
secdownload.timeout = 10 # 超时时间设置,过期后会显示找不到页面
OK ,重新下lighttpd。
下面写个简单都PHP测试页面:
<?php
#假设访问都是/home/www/down/1.jpg
$secret = "abc";
$uri_prefix = "/down/";
$f = "/1.jpg";
$t = time();
$t_hex = sprintf("%08x", $t);
$m = md5($secret.$f.$t_hex);
$url = sprintf("%s%s/%s%s", $uri_prefix, $m, $t_hex, $f);
printf('<a href="%s">%s</a>', $url, $url);
?>
访问下试试。过10秒后拷下图片地址。到其他浏览器或者其他机器访问下刚才生成都url地址。应该是410错误,显示找不到页面了把。
在官方wiki里还有python和ruby的测试代码。可以都尝试下,算法不是很复杂。
请继续关注防盗链系列。