---
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似乎更不安全了……
  
……

# 真正的问题
  先想办法下决心写第一句话吧！
