2核1G3M服务器88一季度

腾讯云,阿里云百度云等 折扣价→点我←

DZ学习研究交流模板各种防盗的方法介绍 discuz 教程

落尽。 一级用户组

站长窝论坛版权声明 1、本帖标题:DZ学习研究交流模板各种防盗的方法介绍
2、论坛网址:站长窝论坛
3、站长窝论坛的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
4、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
5、站长窝论坛一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本帖由落尽。在站长窝论坛《程序综合区》版块原创发布, 转载请注明出处!
评论
最新回复 (7)
  • 落尽。 一级用户组
    引用 2




    前言

    近日来,有关版权的争论真是越来越激烈。您辛辛苦苦制作的漂亮的模板,如果您不在大众的压力下发布出去,那么总会有一天,您的模板会落入他人之手。

    您总不希望您的模板在不经允许的情况下被“盗”吧?

    那就一起来加密您的模板!使别人无法获取您的模板。那如何加密模板呢?请阅读本教程。

    总的来说,所谓的模板就是模板文件和模板图像,如果能把住这两个关口,那么您的模板不能说是万无一失,但是您的模板被盗的几率就大大减小了。下面分别来介绍如何加密模板和图像。


    加密模板文件

    一般,模板文件都是储存在 templates/模板名 目录下的,别人可以通过 http://域名/templates/模板名/*.htm 这种地址访问您的目录乃至模板原文件,然后就可以下载模板文件了。

    从上面的分析可以知道,只要禁止别人访问 templates 目录,那么就能阻止别人下载模板。这里介绍两个方法:

    1. 这个的原理是控制服务器的访问权限,您只要指定了允许访问 templates 目录的IP是您本机的IP,那别人就无法访问您的 templates 目录了。
    实现方法请阅读: http://www.discuz.net/viewthread.php?tid=215072
    2. 当然上述方法在某些服务器上是不被支持因而不起作用的,那您可以采取另一个简单有效的方法——修改模板目录名。您只需把模板目录(templates目录里面的储存模板文件的目录)改成类似 X256a+f5T 或 5T0Ex0[4] 一类的毫无规律、令人猜也猜不到的名字就OK了,然后再到后台 界面风格 - 模版编辑里面修改您的模板的所在目录即可。

    当然,这招虽然能阻止一些人的“盗窃”行为,但是对于一些聪明一点的人,这是防不了他的,有些人可以从论坛发送到客户端的 html 代码入手,分析您的模板,然后再模仿您的作品。

    这样,加密论坛发送的 html 代码就迫在眉睫了。

    详细方法不说了,请阅读: http://www.discuz.net/viewthread.php?tid=231901

    加密完了模板,接下来就是图像了。


    加密模板图像

    相对而言,图像盗窃比模板盗窃更简单,因此防盗技术就越困难,因为图像会自动下载到临时文件夹里,如果不能直接从服务器下载,去逛逛临时文件夹同样也可以获取您的图像。

    下面介绍一种图像防盗方法,其原理类似于防盗链。

    1. 修改您的模板图像目录的名称,修改为一般人猜不出来那种名称。
    2. 在论坛新建一个文件,命名为: showpic.php
    3. 用记事本或其他的文本编辑器,打开新建的 showpic.php ,粘贴下面的代码并保存:
    <?php
    $imgdir = 'images/default';           //请修改这个变量的值为您先前设定的模板目录的名称
    $img = trim(@$_GET['img']);
    $img_addr = $imgdir . $img;
    $request = @$_SERVER['HTTP_REFERER'];
    $PHP_SELF = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
    $boardurl = 'http://' . $_SERVER['HTTP_HOST'] . preg_replace("/\/+(api|archiver|wap)?\/*$/i", '', substr($PHP_SELF, 0, strrpos($PHP_SELF, '/'))) . '/';
    $pattern = '/' . str_replace('/', '\\/', $boardurl) . './';
    $checkreq = @preg_match($pattern, $request);
    if(($checkreq == 1) && file_exists($img_addr)) {
            header('Cache-control: max-age=31536000');
            header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 31536000) . ' GMT');
            header('Content-Encoding: none');
            header('Content-Type: image/' . filetype($img));
            @$fp = fopen($img_addr, 'rb');
            @flock($fp, 2);
            $file = @fread($fp, filesize($img_addr));
            @fclose($fp);
            echo $file;
            exit();
    } else {
            exit('防盗链已启动');
    }
    function filetype($filename) {
            $ext = trim(substr(strrchr($filename, '.'), 1));
            if($ext == 'jpg' || $ext == 'jpeg') {
                    $type = 'jpeg';
            } else if($ext == 'gif') {
                    $type = 'gif';
            } else if($ext == 'png') {
                    $type = 'png';
            } else if($ext == 'bmp') {
                    $type = 'bitmap';
            }
            return $type;
    }
    ?>


    4. 打开后台 界面风格 - 界面风格,编辑您的模板,把界面图片目录修改为:
    showpic.php?img=


    这样就完成了图像的防盗。








    2014/11/05 10:30:38 只看Ta 回复
  • 落尽。 一级用户组
    引用 3




    另外分享个人在apache下的思路:
    1、利用伪静态规则(推荐)

    将文件下载解压后,用记事本打开,把里面的网址替换为你的网站地址,传到template目录下。
    可以防止模板文件被直接访问另存和下载工具的暴力下载。

    2、修改模板路径地址(推荐)

    该方法可直接防止模板目录及文件路径被猜出
    [backcolor=yellow]注意:[/backcolor]修改模板目录路径之前要把模板目录复制到对应的位置!另外在写代码的时候不要让css文件路径暴露模板目录!


    3、把模板文件中的重要代码整合到php文件中,再通过变量输出到模板文件里(建议有开发经验的童鞋)
    比如:
    模板文件中的【<div>test</div>】整合到php代码中【$a = '<div>test</div>';】
    再在模板文件中用$a这个变量进行输出即可得到【<div>test</div>】
    该方法的作用是模板文件被别人下载后也需要自己再经过繁琐的修改后才能使用。

    4、利用程序内置的伪静态过滤原理(建议有开发经验的童鞋)
    (大家也许很纳闷,为什么在模板文件中写好的链接,在开启伪静态功能后,地址却全部被改变了。这也就是利用的正则替换)
    在制作模板的时候,DIV命名尽量无规范,然后再在php程序文件中利用正则将DIV命名替换成其他的名字
    该方法的作用是模板文件被别人下载后也需要自己再经过繁琐的修改后才能使用。

    5、修改程序文件中的模板文件调用代码(建议有开发经验的童鞋)
    打开程序文件,比如论坛首页
    source\module\forum\forum_index.php
    就可以找到类似这样的代码:
    include template('diy:forum/discuz');
    【forum】是文件夹名,【discuz】是文件名,相对路径于【template/当前模板目录/】。这段的意思就是:template/当前模板目录/forum/discuz.htm。
    只需要把这个代码调用的文件名更改下,这样就不会被一般的人找到模板文件的路径。

    [indent]对于以上的第三条、第四条的方法基本上是鸡肋,建议把一二条合并使用就能防止很多有心的人!
    在现在seo横行的天下,我们不能对html代码进行加密,因为一旦加密,搜索引擎就不能识别加密的内容,影响收录。[/indent]


    另外在supesite程序中有个很好的模板机制,模板文件是php类型的,只需要在页头增加<?exit?>该文件就不能被直接访问了。
    以前看到有位童鞋分享过将dz的模板文件.htm改成.php 然后页头增加<?exit?>,但是找不到地址了。
    也许是因为dx的模板机制比较复杂,也可能是为了安全方面的考虑,总之官方没有将ss的模板思路用到dx上。








    2014/11/05 10:57:45 只看Ta 回复
  • 2642375043 一级用户组
    引用 4
    我就看看{:22:}
    2015/04/13 18:46:18 只看Ta 回复
  • 小小心愿 一级用户组
    引用 5
    很强大!!!!{:26:}
    2015/06/01 19:21:47 只看Ta 回复
  • 草根根 一级用户组
    引用 6
    模版文件未找到或者无法访问
    2016/01/27 23:47:50 只看Ta 回复
  • s任逍遥s 一级用户组
    引用 7
    正是我所需要的,谢了。
    2016/05/06 10:22:26 只看Ta 回复
  • s任逍遥s 一级用户组
    引用 8
    {:20:}{:08:}不错不错呀{:08:}{:53:}{:53:}{:24:}{:24:}
    2016/05/06 10:22:58 只看Ta 回复
返回
发新帖