前言
大概在 2010 年前后,那会儿非常流行搭博客,核总本人也想搭一个,但是找来找去,找不到一个安全、简洁、高效的博客程序,于是乎狠心下来自己从零开发一个,于是这套博客系统诞生了,后来命名为 Nuclear-Blog。
说起来从零开发博客,并且全部代码接近于完全原创,国内做到的人估计屈指可数,一是需要大量时间和经验,二是需要极高的编程功力,只是这两点就足以令 99% 的人望而却步,所以大多数人只是拿个开源的博客二次开发一下、换个皮、改个模板玩玩。
从 2010 年到 2015 年,这套博客程序经历了无数次迭代更新,再加上核总从骨子里追求精益求精、登峰造极,所以这 5 年时间里已经将该系统打磨的极其安全、稳定、简洁、高效了,同时也极大地提升了个人编程水平,并且顺带学到了很多底层协议、知识,对以后的个人综合技术水平提升起到了很大的帮助。
那么,有细心的读者发现了,为何 2015 年后没有更新了呢?
原因很简单,该有的功能都有了,不该有的功能也加了,一个博客系统已无限接近于成熟和完美,所以后边更新的频率越来越低,因为没啥可更新的了,哈哈哈……
历史上也开源过几次,版本列表如下:
后来到了 2018 年,由于 Asp 无法跨平台,试了很多方案无解,同时 PHP 已充斥了整个行业,Asp 生存空间越来越小(过时但永不淘汰),再加上个人精力有限,最终放弃了继续开发。
遂于 2018 年中旬抽时间整理了之前的内容,并彻底更换网站系统为 Caddy + Hugo 跨平台完美组合,于 2018 年 9 月中旬重新上线。
随着时代的变迁,从最开始的博客,接下来轻博客,到现在的微博,大家越来越不喜欢臃肿的长文章,更喜欢短小精悍的碎片信息,这年头还坚持写博客的人,已经寥寥无几了。
再后来,有很多朋友喜欢这套博客程序,原因是很简洁而且相当安全,于是在众多朋友频繁催更之下,抽时间整理了最终版的源码,现发布出来。
目前版本是 Nuclear-Blog v7.2,也是最终版本,以下是使用说明和相关功能介绍。
快速使用
1、下载 Nuclear-Blog v7.2 压缩包并解压。
2、在文件 \admin\Index.asp 中修改后台登陆账号和密码,默认 admin:123456。
3、将后台管理主目录 /admin/ 修改为其他人猜不到的名字。
4、在 /inc/conn.asp 中将数据库名字修改为其他人猜不到的,别忘了将两个对应的 .mdb 文件也改名。
5、上传所有文件到你的 Windows 服务器或者支持 Asp 的虚拟主机、空间,如有必要,请参考“初始化设置”对服务器进行相关调整。
6、访问后台,修改一下网站名称之类的基本参数,添加一点内容,Enjoin!
操作过程中如果有疑问或者报错,请参考底下的手册。
本系统已经十分安全,强迫症患者可以参考底下设置一下相关权限。
文件结构
本博客系统的文件结构简洁、逻辑清晰,每个文件中都有详细的代码说明和注释,以供二次开发或者修改代码所参考,具体结构如下:
路径 | 说明 |
---|---|
\后台密码加密算法\ | 加密算法,用于生成 \admin\Index.asp 中后台登陆账号和密码的密文,独立运行,可以删除。 |
\favicon.ico | 浏览器地址栏的小图标,也用于收藏夹,非必须的,看个人喜好更换或删除。 |
\404.asp | 自定义的 404 错误页面。 |
\file.asp | 所有的附件、图片、文件处理程序,主要功能是提取数据库中的文件,缓存并输出。 |
\index.asp | 核心文件,所有的首页、文章、列表、内容处理程序。 |
\admin\ | 后台相关文件,该目录名可以随意改名,最好修改成别人猜不到的。 |
\admin\Index.asp | 后台登陆账号和密码在这里改,配合上边的算法使用,默认账号和密码 admin:123456。 |
\cache\ | 所有页面、文件、图片的缓存,访问会自动生成,可以随时手动删除或在后台清空,程序会在你修改数据的时候自动更新缓存,核心代码全自动的,基本不用管。 |
\image\ | 所有的模板文件、图片、CSS、JS 等静态资源存放路径。 |
\image\Content.html | 内容页面模板。 |
\image\Index.html | 首页模板。 |
\image\List.html | 列表模板。 |
\image\LiuYan.html | 留言板模板。 |
\image\face\ | 留言板的默认头像。 |
\image\KindEditor\ | KindEditor 编辑器,用的纯静态版,不用担心任何漏洞。 |
\inc\0b1214c54b5a59d3_data.mdb | 存放文章、浏览、系统设置的数据库,建议名字改成别人猜不到的,以防非法下载,造成数据泄露。 |
\inc\0b1214c54b5a59d3_file.mdb | 存放附件、图片等文件二进制数据的数据库,建议名字改成别人猜不到的,以防非法下载,造成数据泄露。 |
\inc\MD5.asp | MD5 算法。 |
\inc\Conn.asp | 数据库链接配置和一些公共函数,如果修改了数据库名字,记得在这里也改一下。 |
\inc\Anti-CC_CDN.asp | 早年写的一个高效防 CC 攻击模块(支持 CDN,也可以防路径扫描、恶意采集和暴力破解),具体参考Asp 防御CC攻击模块 (Anti-CC.asp) |
\liuyan\index.asp | 留言板。 |
\liuyan\liuyan.asp | 留言板,提交留言。 |
\music\ | 一个在线音乐视频播放器,主要用于在文章中插入多媒体文件。 |
安全设置
如果你在 \admin\Index.asp 中添加:
<!--#include file="Inc/Anti-CC_CDN.asp"-->
还能天然免疫暴力破解登陆密码攻击,退一万步讲,即使有后台权限也拿不到 webshell,最多删删文章、改改首页意淫下罢了(所以建议多备份)。
XSS 之类的就更不用担心了,不存在任何 XSS 漏洞(欢迎各种代码审计)。
如你用的 CDN 的话,所有访客 IP 地址是通过 HTTP_X_FORWARDED_FOR 获取的,但是不用担心,该函数已进行安全处理。
为了安全起见,建议设置一下文件访问权限,其实不设置也不要紧,这套系统从正面无人能入侵(再次欢迎各种代码审计),建议的文件访问权限设置如下:
路径 | 权限 |
---|---|
\cache\ 及子目录 | 可读可写,禁止执行 |
\inc\ | 可读可写(主要是为了能修改 mdb 数据库) |
\inc\*.asp | 只读,不可写 |
其余所有目录、文件及子目录 | 只读,不可写 |
数据备份
Nuclear-Blog v7.2 博客系统备份十分简单方便,只需要打包一下除 \cache\ 目录之外的所有文件即可。
建议首次打包备份后,以后只需要单独打包一下 \inc\ 目录下的两个 mdb 数据库即可,以减少传输数据量。
众所周知,三处离线灾备是基本原则。
依赖组件
网站留言版是可以设置有新留言自动发送邮件提醒的,具体设置见后台,该功能需要依赖 JMail 发送邮件组件,下载地址见底下。
也有无组件发送邮件的方法,你可以自己改改,但效果不太好,因为是公共地址发送,各种被滥用,容易进垃圾箱(100%),相关代码如下:
|
|
初始化设置
1、启用父路径
IIS -> 网站 -> 网站名 -> Asp -> 启用父路径 -> True
否则会报错:
|
|
或者你把所有包含文件改成绝对路径,就不用修改该设置了,但是如果运行在子目录兼容性会变差。
2、兼容 ≥ IIS 7.0
IIS 7.0 及更高版本使用 32 位 mdb 数据库必须进行如下操作:
IIS -> 应用程序池 -> 网站名 -> 右键高级设置 -> 启用 32 位应用程序 -> True
否则会报错:
|
|
3、临时调试程序
【警告:如非调试请勿进行此操作】
如需临时调试程序代码,请执行以下操作:
IIS -> 网站 -> 网站名 -> Asp -> 编译/调试 -> 将错误发送到浏览器 -> True
并注释掉相关文件的 On Error Resume Next,共有以下文件:
|
|
4、一些其他设置
/inc/conn.asp
|
|
网站模板
模板很简单,由于全站页面并不多,所以只有几个 .html 文件,所有模板相关的文件都储存在 \image\,具体参考上边的文件结构,采用 html + 标签替换的方式生成实际页面内容,具体可以参考 index.asp 和 /inc/conn.asp 中的代码。
模板支持的标签和变量
有效范围 | 变量标签 | 功能描述 |
---|---|---|
全局变量 | {网站名称}、{网站域名} | 网站名称、网站域名。 |
全局变量 | {主页描述}、{主页关键字} | 主页的描述、关键词,给搜索引擎蜘蛛看的,SEO 优化用的。 |
全局变量 | {推荐内容}、{友情链接} | 自定义的推荐内容、友情链接代码。 |
全局变量 | {统计代码} | 统计用的JS代码。 |
全局变量 | {顶部广告}、{底部广告} | 两个独立的广告代码。 |
全局变量 | {当前页码} | 当前文章或列表的页码,首页为 0。 |
全局变量 | {随机数} | 产生一个随机数,一般用来做防采集,随机乱码用的。 |
主页变量 | {最新内容} | 按ID从大到小排序(倒叙)的文章列表。 |
主页变量 | {最多浏览} | 按点击数从大到小排序(倒叙)的文章列表。 |
主页变量 | {随便看看} | 随机提取的文章列表。 |
列表变量 | {文章列表}、{页码列表} | 按照ID或点击数从大到小排列的文章列表及页码。 |
文章变量 | {标题}、{作者}、{内容} | 文章的标题、作者及内容。 |
文章变量 | {时间}、{修改}、{点击数} | 文章的发表、最后修改时间,以及点击数。 |
文章变量 | {关键字}、{描述} | 文章的关键词、描述,给搜索引擎蜘蛛看的,SEO 优化用的。 |
文章变量 | {默认作者} | 文章的默认作者,会替换为系统设置里指定的值。 |
文章变量 | {简单描述} | 截取适当长度的文章描述,在文章页面顶部做简单显示。 |
文章变量 | {上一篇链接}、{上一篇标题} | 上一篇文章的ID(编号)、标题。 |
文章变量 | {下一篇链接}、{下一篇标题} | 下一篇文章的ID(编号)、标题。 |
文章变量 | {本页链接} | 当前文章页面的完整 Url 地址,用于在转载信息里调用。 |
文章变量 | {评论数} | 当前文章对应的评论条数。 |
提示:测试模板的时候记得禁用缓存或者隔一秒自动删除缓存文件,以便查看最新修改后的效果,这是一个自动循环删除缓存的批处理例子:
|
|
以上代码保存到:\网站跟目录\清理缓存.bat
提示:默认的模板经过长期微调,对各大搜索引擎的 SEO 十分友好,可以参考。
下载地址
Nuclear-Blog v7.2,需要 WinRAR 5.0 或更高版本解压。
w3 JMail v4.5 免费版.msi,JMail 发送邮件组件,新留言自动发邮件提醒用的。