再现理想 发表于 2015-2-3 23:56:16

PHP网页编程之网站图象防盗----Apache设置装备摆设妙法

毕业设计作品自己个人还是觉得比较满意的,尽管有些功能考虑的不全面,也没有很好的实现。apache   每一个网站一切者都在全力丑化本人的网站,使它看上去更酷、更具有吸引力,个中最多见的办法就是利用图片、Logo及Flash等。然而,这也会带来一个成绩,由于越大度、越吸惹人的网站,大度的图片和Flash等就轻易被其余网站悄然的盗用。上面咱们就一同会商若何避免网站图象被盗用。

    需求处理的成绩

    复杂的说,这里有两种分歧的盗用行动:
    1. 利用HTML标志IMG在本人的网站中援用网站的图片。
    2. 从网站高低载图片,然后放在本人的网站上。

    关于第一种的盗用行动,正当网站的图片被用来丑化装潢其它网站,这类盗用对正当网站的伤害对照大,由于会见不法网站的会见者实际上是从正当网站获得图片的,正当网站的日记文件充斥了会见恳求纪录,而且带宽被不法会见损耗,而正当网站却没有失掉任何优点。这类类型的盗用经由过程手艺手腕完整可以被避免。

    第二品种型的盗用绝对来讲对照阴险,阅读者在不法网站直接会见不法的图片,而正当网站的版权遭到损害,却得不到补偿,乃至没法发明这类盗用。由于Web的任务体例对这类类型的盗用实践上没法被禁止,然而可使得这类盗用加倍坚苦。

    完整根绝这两种盗用行动是不实际的,然而经由过程手艺手腕可使得这类盗用十分坚苦。在Apache情况下,经由过程设置装备摆设可以限制网站图片被盗用。

    标识需求回护的文件

    作为网站办理员,最大的但愿就是可以回护网站上一切文档,然而从手艺角度思索这类设法是不实际的,因而咱们这里只会商对图片文件的回护。

    作为回护的第一步,起首需求标识出需求回护的文件,然后才干进一步对被标识的文件停止回护。在Apache设置装备摆设文件中添加以下内容:

<FilesMatch "\.(gif|jpg)"> [这里添加回护限制号令]</FilesMatch>

    将容器号令包括在或等容器中,或独自列出,不处于任何回护容器中,如许就会对网站一切文件停止回护,乃至可以寄存在.htaccess文件。将该容器放在分歧的地位,回护的局限时机有所分歧。

    Referer HTTP头字段

    当用户会见Web办事器恳求一个页面时,用户阅读器发送的HTTP恳求中会有一个被称为HTTP恳求头(HTTP Request Header)的信息,这个头信息中包括客户恳求的一些信息,例如收回恳求客户主机的阅读器版本、用户言语、用户操作体系平台、用户恳求的文档名等,这些信息以变量名/变量值的体例被传输。

    在这些信息中,Referer字段关于完成避免图片盗用十分主要。Referer字段指定客户端最初一个页面的URL地址。例如,假如用户会见页面A,然后点击在页面A上到页面B的链接,会见页面B的HTTP恳求会包含一个Referer字段,该字段会包含如许的信息“这个恳求是来自于页面A”。假如一个恳求不是来自于某个页面,而是用户经由过程直接在阅读器地址栏输出页面A的URL地址的体例来会见页面A,那末在HTTP恳求中则不会包含Referer字段。如许关于咱们避免盗链有甚么匡助呢?Referer字段是匡助判别对图象的恳求是来自本人的页面,仍是来自其它网站。

    利用SetEnvIf对图象停止标志

    作为一个复杂的例子,假定需求回护的网站的主页面为http://my.apache.org,这时候候但愿限制一切不是源于本网站的收集会见恳求(例如只答应会见包括在本网站页面内的图片)。这里可使用一个情况变量作为一个标志,假如前提知足时就设置该变量,以下所示:
    SetEnvIfNoCase Referer "^http://my\.apache\.org/" local_ref=1

    当Apache处置一个恳求时,它会反省HTTP恳求头中的Referer字段,假如该恳求来历于本网站(也就是恳求页面的URL为本网站域名),则设置情况变量local_ref为1。

    在双引号中的字符串是一个正则表达式,只要婚配该正则表达式,情况变量才会被设置。本文不会商若何利用正则表达式,这里只需求了解SetEnvIf*号令会利用正则表达式作为参数。

    SetEnvIfNoCase号令的“NoCase”局部暗示这里的正则表达式疏忽巨细写,'http://my.apache.org/'、'http://My.Apache.Org/'或 'http://MY.APACHE.ORG/'都可以婚配前提。

    在会见掌握中利用情况变量

    Apache设置装备摆设文件中的Order、Allow和Deny号令可以完成对文档的基于情况变量的会见掌握,利用Order、Allow和Deny号令起首要思索的是Allow和Deny号令的按次关于Apache处置了局的影响,应当以上面的体例利用:
    Order Allow,Deny

    这里暗示Apache起首处置该HTTP恳求相干的Allow号令,然后处置相干的Deny号令。这类处置体例的默许战略是Deny,所以除非有明白的答应的设置,不然该恳求就会被回绝,任何不法会见将没法胜利。

    因而,在Apache的设置装备摆设文件httpd.conf中添加以下号令,来完成当地援用发扬感化:

Order Allow,DenyAllow from env=local_ref

    如许只要在local_ref变量被界说的情形下,该恳求才会被答应;不然其它一切恳求和会见将会被回绝,由于这些恳求不知足Allow前提。

    注重,请不要在.htaccess和httpd.conf中利用容器号令,这里不需求该容器号令,除非有特别的需求,例如但愿Get恳求和Post恳求停止分歧的处置。

    把这些相干设置放在一同,在Apache的设置装备摆设文件中就会有以下内容:

SetEnvIfNoCase Referer "^http://my\.apache\.org/" local_ref=1<FilesMatch "\.(gif|jpg)"> Order Allow,Deny Allow from env=local_ref</FilesMatch>

    如上设置装备摆设可以寄存在办事器设置装备摆设文件httpd.conf中,或寄存在.htaccess文件中,最初的后果是一样的:在这些号令感化的局限内,只要从本网站援用的图片才可以被会见。

    对图片停止水印处置

    下面引见的办法其实不能完整避免图象盗链,这是由于有些固执的盗用者可以捏造Referer值来盗用图片,使相干设置生效,所以不成能完整避免网站图片被盗链,然而下面接纳的办法会使得盗链变得很坚苦。

    另外,还有一个避免图片被盗用的办法,就是对网站的图片都停止水印处置。对一个数字图片停止水印处置是指在图片中到场一个特别的签名编码,而且可以停止验证和检测,数字水印其实不会下降图片的质量,乃至可以完成图象被切割今后的残剩局部依然会包含水印信息。图片被再次编纂、打印,并再次扫描今后,水印依然可以被检测到。因而,水印手艺是一个十分好的回护图片不被盗用的手艺。

    纪录盗用恳求

    假如想晓得本人网站的艺术品是不是被盗,可以测验考试利用一样的侦测和情况变量来纪录可疑恳求。例如,在httpd.conf文件中添加以下号令,那末会在/usr/local/web/apache/logs/poachers_log文件中纪录一切具有不法的Referer头信息的会见恳求:

SetEnvIfNoCase Referer "!^http://my\.apache\.org/" not_local_ref=1SetEnvIfNoCase Request_URI "\.(gif|jpg)" is_image=1RewriteEngine OnRewriteCond ${ENV:not_local_ref} =1RewriteCond ${ENV:is_image} =1RewriteRule .* - CustomLog logs/poachers_log CLF env=poach_attempt

    在下面代码中,头两行动前提设置标志(也就是没有准确的当地Referer的图片文件),RewriteCond检测是不是该标志被设置,然后RewriteRule设置第三个标志,最初一行使得如许的会见恳求被纪录在特定的文件中。

    下面复杂引见了在Apache情况下,若何经由过程设置装备摆设来限制网站图片被盗用的办法,抛砖引玉,但愿人人将本人更好的经历引见出来。
PHP的理解是新手最难迈过的一道门槛,不过你应该感到幸运的是PHP已经最大极限的为了新手而努力了,如果你学过其他的语言,也许会觉得PHP的确相当的简单,但是如果你之前什么都没学过,那么阿弥陀佛,硬着头皮琢磨吧。

深爱那片海 发表于 2015-2-4 07:04:02

多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。

小女巫 发表于 2015-2-9 18:20:52

因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax

谁可相欹 发表于 2015-2-27 09:05:31

刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。

admin 发表于 2015-3-1 21:43:23

真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,

冷月葬花魂 发表于 2015-3-6 22:04:27

首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。

兰色精灵 发表于 2015-3-9 09:52:42

至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。

简单生活 发表于 2015-3-16 21:21:19

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

变相怪杰 发表于 2015-3-17 09:09:01

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

海妖 发表于 2015-3-18 16:39:22

基础有没有对学习php没有太大区别,关键是兴趣。

乐观 发表于 2015-3-19 13:44:45

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

透明 发表于 2015-3-27 18:08:38

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

只想知道 发表于 2015-3-28 02:53:55

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,

莫相离 发表于 2015-4-10 20:05:21

学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql

若相依 发表于 2015-6-8 04:22:09

其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。

小妖女 发表于 2015-6-27 07:36:58

至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。

因胸联盟 发表于 2015-6-29 07:08:54

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

精灵巫婆 发表于 2015-7-6 01:05:45

曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ;

飘飘悠悠 发表于 2015-7-11 00:11:47

基础有没有对学习php没有太大区别,关键是兴趣。

老尸 发表于 2015-7-11 21:13:20

学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
页: [1]
查看完整版本: PHP网页编程之网站图象防盗----Apache设置装备摆设妙法