Blog的“人身安全”
今天晚上闲着没事,又修改了一下Waki-Blog。本次修改主旨在于提高前台程序的执行效率。首先分离了前台和后台的语言包文件,因为Waki-Blog的前台远比后台来的简单,所以需要的语言包的数量比较少,为前台专门做一个语言包可以加快前台的程序加载速度。由于Waki-Blog程序结构的原因,PHP代码与语言、模板完全分离(PHP代码中看不到一个字、一点HTML代码,当然,BBCDOE解析除外),所以程序更加依赖于语言包和模板,要提高效率,只要从语言包和模板入手即可。
此外还调整了用户身份验证部分。只在后台的时候才验证用户身份,这样就在前台减少了一次数据库查询。
今天启动了Waki-Blog的图片防盗链功能。
Waki-Blog的图片管理依赖于站内图库功能。在编辑器中可以上传图片,并指定一个该图片的索引。比如我给某副图片取名叫“feiron”(《天高く、雲は流れ》男主角的名字-0-),就可以在编辑器内用BBCODE贴上[image|feiron],BBCDOE解析的时候,就会插入索引为feiron的图片,与wiki原理相似。不仅如此,索引在BBCODE解析的时候,会通过加密的方式传递给程序,这样,图片地址就变成了类似response.php?image:show::a44c2FpdG91的形式,隐藏了图片的真实路径和文件名,达到了保护图片的目的。
当response.php接到请求的时候,会首先检查1.加密了的索引是否合法、2.检查请求来源是否在指定的白名单之内。如果没有问题,就会解码图片索引、查询数据库找到图片的真实路径、由GD库打开图片、PHP输出HTTP头、之后同样通过GD库来将图片呈现。任何一项不符合要求,都会拒绝请求。
这只是防盗链的第一步,也是最基本的一步,即试图从本站做起防止他人盗链。但是,来源检查并不一定经常有效,遇上某些丧心病狂的人通过伪造HTTP头的方式来认为改变请求来源的时候,只有在图片上加入含有本站标志的水印来标明图片来源。这只能说是属于下下策的方式了,因为在图片上添加水印,不能直接起到防止盗链的作用,只能是一种类似“舆论施压”的作用。
过两天我会在Blog上贴一篇关于PHP图片水印添加的心得的文章,届时会公开Z-AutoWartermark 2.0的代码。
引用通告(TrackBack):http://www.williamlong.info/cmd.asp?act=tb&id=539

Blog的“人身安全”有 0 条回应
发表回应