这里说点题外话:

其实本篇文章两天前就想写了,不过一直忙于和“犀利哥”进行一场“入侵”攻防战,所以写的晚了些时候。
 
话说在我第一次发布博客测试版本时,“犀利哥”就以其高调优雅的方式抢先闪亮登场,与我开始了第一次攻防战。
 
后来终于在两天后闭幕,“犀利哥”一去不再来,于是发文:基础却容易被忽略的那点事--web入侵方式及注意事项总结
 
在持续多五天,无攻击发现的情况下,我发布了:支持多语言、多用户、多数据库、完美URL之路过秋天版博客 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  =   ; 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 >< a  class ="headermaintitle"  href ="http://justinyoung.cnblogs.com/" > Yes!B/S! </ a ></ h1 >
< h2 > Justin Young ' s blog </ h2 >

我们加上两个id,完成头部两个显示,改为完:
< h1  id ="labSpaceName" >< a  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" >
< a  id ="labUserName"  href ="/"  key ="anonymous" > 游客 </ a >  |  < a  id ="logStatus"  href ="/"  key ="login" > 登陆 </ a >  |  < a  href ="/lang/china"  key ="china" > 中文 </ a >  |  < a  href ="/lang/english"  key ="english" > 英文 </ a >
                    |  < a  href ="/lang/custom"  key ="custom" > 雷语 </ a >
</ div >
//说明:id="headRightMenu"节点下的a链接会自动增加Url前缀。

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

< ul  class ="navList"  id ="headMenu" >
                     < li >< a  key ="index"  href ="/" > 首页 </ a >   </ li >
                     < li >< a  key ="article"  href ="/article/" > 文章 </ a >   </ li >
                     < li >< a  key ="photo"  href ="/photo/" > 相册 </ a >   </ li >
                     <!--   <li><a key="guestbook" href="/guestbook/">留言</a> </li> -->
                     < li >< a  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/

提供修改的模版下载:[置顶]CYQ.Data 轻量数据层之路 bug反馈、优化建议、最新框架下载

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

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

[最后说明:由于博客园的标准模版中竟然没有分页的样式,所以在分页样式里有点小问题,哈哈~~~]

原文链接: http://www.cnblogs.com/cyq1162/archive/2010/11/17/1879724.html

转载于:https://my.oschina.net/chen106106/blog/43354

路过秋天版博客-皮肤制作指南 [附犀利哥入侵攻防站话题]相关推荐

  1. 路过秋天版博客 V2.0 正式版发布 增加后台管理系统[支持多语言、多用户、多数据库、目录级URL]...

    路过秋天版博客发布历史回顾: 1:2010年11月08日---支持多语言.多用户.多数据库.目录级URL之路过秋天版博客发布[绝对有杀伤力的博客] 2:2010年11月10日---基础却容易被忽略的那 ...

  2. 路过秋天版博客 V2.0 测试版发布 公测一周[支持多语言、多用户、多数据库、目录级URL]...

    路过秋天版博客发布历史回顾: 1:2010年11月08日---支持多语言.多用户.多数据库.目录级URL之路过秋天版博客发布[绝对有杀伤力的博客] 2:2010年11月10日---基础却容易被忽略的那 ...

  3. csdn修改博客皮肤

    csdn修改博客皮肤 可以通过修改html文件的方式,官方有接口

  4. 自定义CSS博客皮肤

    共享一下我的自定义CSS博客皮肤(2012.3) 转载于:https://www.cnblogs.com/hl666/p/3655261.html

  5. CSDN博客皮肤设置

    当你看到其他博客主们的博客界面很好看的时候,是不是自己也想设置成这样的呢?不幸的是新版CDSN博客皮肤设置已下线,所以无法在上面直接切换其他皮肤. 幸运的是,这里有其他方法,也能切换到你喜欢的皮肤,具 ...

  6. 如何更改CSDN博客皮肤

    CSDN的初始博客皮肤都是'大白',觉得不好看,但是又不能改,这时我们应该怎么办呢? 首先,单击一下你想要的博客皮肤,点击右键选择检查功能,打开如下界面: 接着,我们发现所有皮肤都是: div cla ...

  7. 微信小程序版博客——开发汇总总结(附源码)

    花了点时间陆陆续续,拼拼凑凑将我的小程序版博客搭建完了,这里做个简单的分享和总结. 整体效果 对于博客来说功能页面不是很多,且有些限制于后端服务(基于ghost博客提供的服务),相关样式可以参考截图或 ...

  8. 用开源博客系统OneBlog来搭建自己的个人技术博客网站(java版博客系统)

    java版博客系统 一直想搭建一个个人的博客,方便记录和分享一些技术点,在网上也找了一圈,最终在开源中国中发现了一款很不错的java版的博客系统 https://gitee.com/yadong.zh ...

  9. HTML5+CSS大作业——简单的程序员个人博客(7页) 大学个人博客网页制作教程 表格布局网页模板

    HTML5+CSS大作业--简单的程序员个人博客(7页) 大学个人博客网页制作教程 表格布局网页模板 常见网页设计作业题材有 个人. 美食. 公司. 学校. 旅游. 电商. 宠物. 电器. 茶叶. 家 ...

最新文章

  1. 在ireport报错 报 jdk5找不到的解决办法
  2. 眉目传情之匠心独运的kfifo【转】
  3. leetcode算法题--删除链表的倒数第N个节点
  4. 解读电感和电容在交流电路中的作用
  5. 利用blink CEP实现流计算中的超时统计问题
  6. 阿里云喻义:十年牧码,从码农走向工程师的进化之路
  7. 学工在线新闻搜索引擎0.1 beta版
  8. 多益网络 2016 春季实习校招笔试回顾(C++游戏后台)
  9. Android Studio建立百度地图步骤及导航无语音解决方法
  10. 运算放大器的偏置电流、失调电流
  11. 怎么恢复苹果内置的计算机,苹果还原系统的方法_苹果电脑Mac如何恢复出厂系统-win7之家...
  12. 【matlab图像处理】图像处理工具箱(1)
  13. 车载高德地图显示服务器信息,车载高德一直gps定位中,怎么解决高德地图导航gps信号弱...
  14. 巴巴腾机器人视频_巴巴腾机器人,没想到你是这样的机器人!
  15. B 站崩了,总结下「高可用」和「异地多活」
  16. 解决“ImportError: cannot import name ‘_validate_lengths‘”问题
  17. OPENMV上的目标检测,目标定位模型
  18. CMMI的关键过程域(KPA)
  19. Android聊天室(客户端)
  20. 优达学城无人驾驶工程师——P4车道线检测功能

热门文章

  1. RDD断点回归案例怎么分析?
  2. 蔡徐坤成为Jo Malone London祖玛珑全新品牌代言人
  3. 加拿大高中计算机课,加拿大高中课程体系(一)
  4. Scaleform引擎将与虚幻3捆绑 为界面设计提速
  5. 二十一、商城 - 商品录入-KindEditor 编辑器(9)
  6. 【MMDet Note】MMDetection中AnchorGenerator代码理解与解读
  7. 接水果游戏代码 c语言,制作接水果游戏
  8. 青蛙跳台问题(初级)
  9. scratch猫捉老鼠 电子学会图形化scratch编程等级考试一级真题编程题答案2019-8
  10. matlab6.5字体调整,matlab6.5中如何设置下图中字体的大小?