QBlog

This blog will record the growth associated with the Autumn Garden distance and the history of the development progress and other relevant circumstances
Bulletin
Welcome to Autumn Garden official blog, please: download and use CYQBlog system, and make your comments and Recommendations.
Article Archive
Article
QBlog-皮肤制作指南
2011/1/2 3:39:34

这里说点题外话:

其实本篇文章两天前就想写了,不过一直忙于和“犀利哥”进行一场“入侵”攻防战,所以写的晚了些时候。
 
话说在我第一次发布博客测试版本时,“犀利哥”就以其高调优雅的方式抢先闪亮登场,与我开始了第一次攻防战。
 
后来终于在两天后闭幕,“犀利哥”一去不再来,于是发文: 基础却容易被忽略的那点事--web入侵方式及注意事项总结
在持续多五天,无攻击发现的情况下,我发布了:多用户QBlog V1.0 正式版本发布--功能强化修正及一键安装工具
可是在我发布完后,“犀利哥”终于再度高度现世,一次灭掉了我4张表,逼着我极力的从各个层面进行封杀,但持续了两天,还是无法阻挡“犀利哥”前进的步伐;

中间我实迫使出绝杀:包括二重加密,Cookie变更,日志记录追踪,还有整站代码审查等方式,在自以为封杀的完美的时候,“犀利哥”的一度出现,再次挂掉了我一张表。

再一次把我逼入绝境,我被迫使出斧底招数,在底层框架统一入口执行处 CYQ.Data 框架  加入高强度的过滤。

 

以下是所有输入的where条件进行过滤的代码:

过滤关键字函数代码
private static string FilterChar(string text)
        {
            text 
= text.Replace("--""").Replace(";""").Replace("&""").Replace("*""");
            
string lowerText = text.ToLower();
            
string[] items = lowerText.Split(' ');
            
if (items.Length == 1 && lowerText.Length > 30)
            {
                Log.WriteLog(text);
//记录日志
                if (text.IndexOf("%20"> -1)
                {
                    
return string.Empty;
                }
            }
            
int keyIndex = -1;
            
bool isOK = false;
            
for (int i = 0; i < filterKey.Length; i++)
            {
                keyIndex
=lowerText.IndexOf(filterKey[i]);
                
if (keyIndex> -1)
                {
                    
foreach (string item in items) // createtime
                    {
                        
if (item.IndexOf(filterKey[i])>-1 && item.Length>filterKey[i].Length)
                        {
                            isOK 
= true;
                            
break;
                        }
                    }
                    
if (!isOK)
                    {
                        Log.WriteLog(filterKey[i] 
+ text);//记录日志
                        return string.Empty;
                    }
                    
else
                    {
                        isOK 
= false;
                    }
                }
            }
            
return text;

        }


        
public static string[] filterKey = {"select","master","delete","drop","update","truncate","create","exists","insert",
"asc(""while","xp_cmdshell","add","declare","exec","ch","ch(",
            };
      

 

可是“犀利哥”太厉害了,绕过了我所有的封杀,我的一切招数在他面前,一切都成了浮云~

在强大的攻势下,我怀疑数据库链接失守了,是否“犀利哥”另建了一个账号,于是执行以下语句,询问痴心用户有几人:

select * from master.sys.sql_logins

执行后完全发现并无其它陌生用户在场,于是,只好继续追加其它封杀方式。

为了查明真现,我在各路关口设置路障,等着“犀利哥”再次光临,等了好久,“犀利哥”没来,可能正在上班了。

这时候,我把我的情况和以前的一个同事讨论了下,并给了他链接下载我发布的博客。


于是,他认真的分析起来了,时间一秒一秒的过去了,终于,他发现了,是他,战胜了“犀利哥”。

神秘神秘神秘!神秘的同事,究竟发现了什么??“犀利哥”完美的作案手法,又是什么??这一切的迷团究竟是什么?

答案终于要揭晓了:各位观众......................4条A

 

答案就是:

神秘的犀利歌作案手法揭晓,点击查看

原来,我发布的V1.0正式版里,带有我远程演示地址 http://www.cyqdata.com/ 的数据库链接字符串。真是好大的一个太阳。
 
于是,一切都成浮云了,现在演示版本临时切换到Access数据库了,由于虚拟主机数据库改不了密码[-_-..竟然有这种事],只好重新又开了一个数据库了。

 

好了,废话说完了,现在进入说明 路过秋天版博客 的其中一个小点,如何制作皮肤

 

平易近人,强大的兼容扩展设计

本博客的模版使用独出一格,非常闪亮,仅需要在普通美工制作完的页面html中,稍为加工,即可完成一套新款皮肤。

记得在发布博客V1.0时,有人说仅表面就说太丑陋,说这话的人,完全是看不到本博客的内涵;

因为本人不是美工,无法制作精美的衣裳,但不代表它本身无法穿上美丽的衣裳。

再说,我并不觉和我提供的第一套模版不好看,我觉的相当的简洁,优美,不过这都不是重点,重点是它能穿上其它衣裳。

 

由于本人不是美工,也不会美工,但是又得写教程,这时候,我只能向博客园借一套衣裳来展示下了

博客园有N百套皮肤,可怜都没提供下载,不过倒是一套标准的模板,是演示如何制作博客完皮肤的示例模版,

我这里就借来穿一穿,dudu别介意哦
~~[我花了一个半小时,才把它勉强穿了起来,说起来也费了我不少劲]

这里是其博客园皮肤设计帮助所在地:http://skintemplate.cnblogs.com/
 ,二话不说,把它的标准模块下载下来。

 

下面泛泛介绍个大概了:

 

1:我们比较下博客园的皮肤和系统博客的皮肤

 

左侧是博客园的标准皮肤,右侧是系统标准的皮肤,那左侧的是怎么化身和右侧一样的呢?

 

2:调整目录结构

为了和标准样式一致,就在左侧新建一个css文件来把Style拉进去吧,然后页面的样式路径要小动一下,这步原则上改不改也无所谓,不过改了看起来统一一点。

 

3:从主页下手,页面名称要保持一下

这里提示一下:html首行的<!DOCTYPE html public ,这里的public要为大写PUBLIC,注意下即可

 

把主页搞定了,其它页面基本手动禽来,先把default.htm改名成index.html,接下来就是套ID了,下面示例头部制作:

A:填充头部------------开始----------------------

A1:标题和说明:

<h1><class="headermaintitle" href="http://justinyoung.cnblogs.com/">Yes!B/S!</a></h1>
<h2>Justin Young&#39;s blog</h2>

我们加上两个id,完成头部两个显示,改为完:
<h1 id="labSpaceName"><class="headermaintitle" href="#">Yes!B/S!</a></h1>
<h2 id="labSpaceIntro">路过秋天's blog</h2>

 

说明:由于本博客采用以ID为节点填充方式,所以把id加在哪,哪个节点就会被填充替换。所以,拿到什么html页面,找准位置,往里加就行了。

 

A2:右上角的信息,博客园没有,只好自己加了,从原来的样式里copy过来:

<div id="headRightMenu" class="Body_Head_Top_Menu_Style">
<id="labUserName" href="/" key="anonymous">游客</a> | <id="logStatus" href="/" key="login">登陆</a> | <href="/lang/china" key="china">中文</a> | <href="/lang/english" key="english">英文</a>
                    | 
<href="/lang/custom" key="custom">雷语</a>
</div>
//说明:id="headRightMenu"节点下的a链接会自动增加Url前缀。

 

A3:导航菜单,直接替换内容即可:

<ul class="navList" id="headMenu">
                    
<li><key="index" href="/">首页</a> </li>
                    
<li><key="article" href="/article/">文章</a> </li>
                    
<li><key="photo" href="/photo/">相册</a> </li>
                    
<!--  <li><a key="guestbook" href="/guestbook/">留言</a> </li>-->
                    
<li><key="admin" href="/admin/">管理</a> </li>
</ul>
//id="headMenu的节点下的a链接会自动增加前缀成如成:http://cyq1162.cyqdata.com/article

 

 于是,整个头部轻松就解决完了,我们并没有修改博客园皮肤的任何样式,只需要追加ID或替换文字即可。

填充头部------------结束----------------------

 

由于这种替换是种烦锁上事情,这里就不从头写到尾了,只要基本明白这个原理,基本上可以到处拿模版,稍为加工即可成为一套衣裳了。

 

4:制作共同部分高级缓存commoncache.html

这个是什么来的呢?简单的说有点像用户控件,由于大部分的html,其头部,左侧,底部,基本是一致的,因此,本博客把这些抽取出来做为共同的部分缓存。

因此,commoncache.html实际上就是一个普通的html,或者说把index.html 拷贝一份也行。

有了commoncache.html之后,其它页面的html就减少了很多,我们来看一下其它页面是怎么使用这个commoncache.html的:

在所有页面的html中,我们用:<div cachefrom="header"></div>来替换所有头部html

简单的说: cachefrom="id"语法,就是把当前节点,替换成commoncache.html中的id节点,

如果你看一下原始的html,就会发现有N个这样的cachefrom语法

 

5:多国语言文件

这个从系统default皮肤里copy一份过来,然后看着改着先。

其关键语法就是key="id"与keyvalue="id"

这个以后介绍。

 

6:制作一张template.gif

就是模版的缩略图了,用于在后台选择模版时选择。

 

演示及下载

目前已经借了一件穿到在线演示中了:http://www.cyqdata.com/

 

提供修改的模版下载:下载中心

 

若想使用在自己的系统中,需要手动在Blog_Skin表中添加一条数据,怎么添加?你懂的。

 

还有,V1.0 正式版今天更新了一下,虽然之前和“犀利哥”攻防战是浮云一场,不过对安全有严格要求的,可以再次下载。

 

Autumn Garden is QBlog the official site, created by the passing autumn, based on the framework data layers developed cyqdata support multi-user, multi-language, multi-database (access, mssql, oracle), directory level url and other powerful blog system
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"
 Article Relate   Browse(4400)   Comment(1)   Tag 秋色园,qblog,cyqdata,皮肤,制作,指南
ブランド偽物コピーN級品[188.136.190.*] : 2018/9/10 19:25:22
ルイヴィトン 財布スーパーコピー
ようこそ ルイヴィトン スーパーコピー販売商店へいらっしゃいませ!
真心込めて最高 レベルのスーパーコピールイヴィトン偽物ブランド品をお届けしています。
安全税関対策+ 素早い配送+随時の在庫補給+丁寧な対応+スーパーコピー販売業界最低価格に挑戦 !
当店は業界最高品質に挑戦!全商品はプロの目にも分からないルイヴィトン 財布スーパーコピーです。
ルイヴィトン財布コピー、ルイヴィトン 財布 ブランド偽物など世界 有名なバックコピー商品が満載!
当店のスーパーコピー商品は他店よりも質が高く、金額も安くなっております。
ご購入する度、ご安心とご満足の届けることを旨にしております
よろしくお願いします ありがとうございます (*^__^*)
:Register
  
Copyright © 2010-2020 power by CYQ.Blog - Autumn v2.0 All Rights Reserved