You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
---
layout: post
title: 重建MaBBS的计划
tags: [MaBBS, 重构]
---
这就是所谓的只擅长建立计划吧(笑)<!--more-->
# 关于计划
重构计划:[Mabbs重构计划](https://github.com/users/Mabbs/projects/1)
需要重构的项目:[Mabbs](https://github.com/Mabbs/Mabbs)
## 关于这个项目
这个项目是我初中的时候就开始写的, 当时我在网络上看到了一种很有意思的论坛, 叫做Telnet BBS, 貌似以前有名的高校都搞这个东西。那时刚好在用一个极其破烂的手机( Mem:256MiB,CPU:Spreadtrum SP8810,Rom:512MiB) 在那里学着写Shell( [关于这一段历史](/2019/02/01/history.html#linux-shell时期)) 。看完Telnet BBS的介绍之后, 我膨胀了, 我觉得以我当时的水平, 肯定能写出来, 于是我从此走上了填这个万年巨坑的不归路。
当时我不但膨胀, 而且傻, 把一个有着很明显的注入漏洞的那么一个BBS写出来之后居然还发到当时Bilibili开的一个类似贴吧一样的东西里( 现在已经没了) , 那时候每个路由器还是动态公开IP的, 于是我就那么放在了网上, 丝毫不担心有人会拿它当跳板机( 是我想多了LOL)
在编写之中, 我了解到了CGI, 于是它就可以既能用网页版, 又能用命令行版。
到现在为止, 这个BBS仍然有很严重的注入漏洞……而且小时候写代码也没什么规范, 基本上是边学边写, 于是过了一个高三没写, 那个代码我是一个字也看不懂了23333
# 现在重构的打算
本来是想写在那个Project里的, 但是后来想了想, 还是写成博客比较好, 那个东西似乎不太适合我( 就是想水一篇啦)
## 1. FastCGI
我很早以前就想把这个破烂CGI改成FastCGI, 但是网上找了半天, 基本上也没看懂什么。不过后来用上了服务器, 学了Nginx, 才明白, 原来所谓的FastCGI就相当于是自己又写了一个服务器软件, 只是这个比较简单, 只是它不再是执行后就结束的程序, 而是在后台挂着, 继续等待下一个请求。而Nginx起到的作用就是提高这个自制服务器的安全性, 另外可以提前输出, 保证速度, 其实说白了就是反向代理。这次看看重构能不能加一个这个功能。
## 2. 前后端分离
最近好像挺流行这个的, 就是要用Javascript, 不过这个我现在也学的差不多了, 不像以前, 整个BBS里没有一句Javascript。
这样干还有一个好处, 就是我可以不限定客户端, 假如我以后学了其他语言, 就可以利用统一的API调用了
## 3.POSIX
这可是我写的东西的一大优点, 我写的BBS就算是只有一个Busybox也能运行, 保证了在任何一台设备上都能完美运行, 而且一句sed、grep、awk都没有用, 就连这三件套没有都能用哦!
## 4. Hash&Session
之前我写的BBS全部都是明文保存密码的, 不过现在我学了那么多关于网络安全的知识, 至少Hash还是要有的。不过我不打算用其他工具, 我要自己写一套! 之前确实是试了试Hash, 不过感觉好像又不太对……回头再仔细查一下吧。
之前BBS登录时密码都是放在Cookie里的, 现在想想那真是太蠢了, 本来这个BBS就全都是XSS漏洞, 再明文放密码那不就是想要谁的密码都可以吗? ( 虽然开了HTTPONLY) 不过为了提高安全性, 我搞了一个类似于Session的东西, 但是我不太会写随机数, 所以感觉这个Session似乎更不安全了……
……
# 真正的问题
先想办法下决心写第一句话吧!