Ugly-PHP-Blog
(本文就是Github README.md)
Ugly-PHP-Blog
简介
也叫作UPB,这是我自己写的博客系统,也正运行于我的服务器之上,域名之下.
RESTKHZ | 休止千鹤
麻雀虽小,五脏俱全.
设计目标是轻量,简单,安全的php博客系统.
Markdown编辑, 文章分类管理, 支持评论, 计数器, 单用户, 具有简单SEO功能.
你可以克隆下来玩玩,看看怎么写的,目前功能有些粗糙,你未必会喜欢.(如果你有兴趣可以直接翻到 安装)
目前版本定在0.8,可能长期会在0.9.999
欢迎各位提出建议指正
如果能有 20 stars 我马上加班加点在能力范围之内添加功能修(写)BUG!
开发基于自写的玩具:Ugly-PHP-Framework.毕竟自己写的框架不做出一些东西是没有价值的.(尽管做出的东西价值也不大)
特性
Markdown文章编辑
我还是很喜欢Markdown写作的. 相信很多人也是. 有时候我会从一些Markdown笔记里直接复制笔记发出来,挺方便.(感谢Editor.md)后台写作的时候会自动存入localstorage备份防止丢失.
文章可以在首页,分类中隐藏.也可以设置拒绝访问.
评论功能
评论功能并非第三方提供. 如果是管理员的回复,会带有一个标记. 总体风格模仿Wordpress.简单的引用功能.
后台可以删除评论,但是目前没做审核功能是个缺陷. 防Spam方面我是用JS玩了一个小把戏,因为很多spam bot没有JS解析,所以加了一个简单的JS渲染了一个隐藏表单,后端会进行检查是否渲染判断是否是bot.
一定的SEO,LaTeX支持,简单的基于Session计数
SEO还是有一定重要性的,网站动态生成sitemap,也可以自己手写meta description.简单的路由让博客站极为扁平.keyword不太重要,不急,以后可以慢慢做个Tag当keyword. 网站使用Session计数,过滤了一部分的爬虫UA. 真的要统计还是用第三方平台更靠谱一些. 至于Latex用的MathJax,这个优点有点牵强,任何网站都可以轻松的自己加自己配置.
轻小
因为穷,租不起好的服务器,所以数据库使用了Sqlite.对于512M的内存绰绰有余.Sqlite不需要占用太大内存,我的博客站服务器没跑什么东西,内存占用日常80MB左右浮动,我相信256M的机器也能带的动这个博客系统. 另一方面, 博客站流量并不太大,数据量小的时候不同数据库性能其实没有明显差距.反而装Mysql在512M的机器上有时候会触发OOM, 租贵了没访客也浪费. 什么?小钱你不在乎?nevermind….
因为Ugly-PHP-Framework的设计,模型层仅使用PDO对象,不care是什么数据库,而对象的初始化封装在一个文件里,真的未来万一哪天做大了也可以换mysql.
UPB安全吗?
我只能说比较安全.我不能做出承诺,如果你了解信息安全,没有人能承诺100%的绝对安全.
- SQLi: 框架使用pdo,几乎完全进行了预处理.就算是访客统计pid没有pdo,也强制把它转换成int进行消毒. 自己测试的时候没有发现SQL注入.
- XSS: 前台评论交互没有发现XSS, 但是后台因为一些需要标签和特殊字符的问题,后台存在潜在XSS
- 上传漏洞: 至于图片上传完全交给第三方图床.
- 密码学: 密码使用Bcrypt进行Hash,即便你的备份被人偷了,密码hash也不容易被还原.
- 数据安全: 后台有数据库备份功能, 用不用那真不是我的事了.
- 危险函数: 没有使用一切命令执行函数.
- 文件包含: 之前一个版本可能有潜在的文件包含问题,但是路径重写对攻击造成了阻碍. 无论如何,我在路由控制器周围还是移除了:
./和\0
缺陷
- 学了两个星期Vue.js做的后台, 非专业开发, 就那样吧.
- Categories管理不完善
- 轻量这点和Hexo,Ghost没有可比性.
- 你克隆下来的,Twig模板里页底依旧是我的信息,这边是写死的.目前你得自己动手改模板.
- 没有在windows平台下测试过,已知的,后台的系统负载在windows平台下肯定不会正常显示.
- 没有安装脚本,未来在我认为完成度足够的时候会加上.
- 没有生态.
未来
会缓慢更新的. 只要我自己网站没有放弃. 我这个域名下的博客诞生于2016年, 未来应该还会继续下去.
会优先完善基础功能.
安装试用
因为开发测试还在进行,所以并不打算在现阶段制作安装脚本,所以需要手动配置
另外后台管理项目(ugly-ap)由于使用Vue.js, ajax需要手动指定api域名,需要手动编译,并非开箱即用.
你应该先在环境中布置php环境, php尽可能安装7.x版本. 安装并且打开扩展:pdo,xml
系统记得装上sqlite3
目录结构:
- ugpf 核心文件
- data 数据库文件,sqlite.db,旁边的sql文件是数据库结构
- public 这个目录是网站根目录,安全起见,必须是这个.
首先,你需要进入data目录编辑数据库sqlite.db
,进入users
表,name
字段是显示名称,user
是登录名称.
密码现在是空的,你需要自己生成Bcrypt hash.你可以打开终端如此操作,<passwod>
是你的密码:
php -r 'echo password_hash("<password>",PASSWORD_BCRYPT);'
你会获得一个hash,将它复制出来,现在在终端输入sqlite3 ./sqlite.db导入数据库中:
$> sqlite3 ./sqlite.db
SQLite version 3.33.0 2020-08-14 13:23:32
Enter ".help" for usage hints.
sqlite>
输入SQL语句,<hash>
是你的密码哈希:
UPDATE users SET password = '<hash>' WHERE id = 1;
然后你就可以把文档根指向public,启动web服务.如果只是本地测试的话,你也可以cd去public目录使用php内置web服务看看php -S 127.0.0.1:8000
如果可以访问,功能正常,那么一切都好.
接下来你可以前去./ugpf/view中修改html格式模板,DIY你自己的博客风格.
Comments
Hu3:
Hi, Your blog doesn't seem to have an RSS feed? I sincerely hope you can add it and I will subscribe to your blog in RSS reader. If you add it, please let me know, I'd appreciate it ヽ(✿゚▽゚)ノ
Reply