BlueBird

陈皓叔的程序员练级指南的第一个作业

作业要求: #

实践项目:

无论你用 Python,还是 Node.js,还是 PHP,我希望你能做一个非常简单的 Blog 系统,或是 BBS 系统,需要支持如下功能:

  • 用户登录和注册(不需密码找回)。
  • 用户发贴(不需要支持富文本,只需要支持纯文本)。
  • 用户评论(不需要支持富文本,只需要支持纯文本)。

你需要从前端一直做到后端,也就是说,从 HTML/CSS/JavaScript,到后面的 PHP(Python/Node.js),再到数据库。这其中需要你查阅很多的知识。

这里有几个技术点你需要关注一下。

  1. 用户登录时的密码不应该保存为明文,应该用 MD5+Salt 来保存(关于这个是什么,希望你能自行 Google)。
  2. 用户登录后,对于用户自己的贴子可以有“重新编辑”或 “删除”的功能,但是无权编辑或删除其它用户的贴子。
  3. 数据库的设计,你需要三张表:用户表、文章表和评论表,它们之间是怎么关联的,你需要学习一下。这里有个 PHP 的 blog 教你怎么建表,你可以 前往一读

如果你有兴趣,你可以顺着这个小项目,研究一下下面这几个事。

  • 图片验证码。
  • 上传图片。
  • 阻止用户在发文章或评论时输入带 HTML 或 JavaScript 的内容。
  • 防范 SQL 注入。参看PHP 官方文档微软官方文档 ,或者你自己 Google 一下。

上面这些东西,不是什么高深的东西,但是可以让你从中学到很多。相信你只需要自己 Google 一下就能搞定。

我的计划: #

做一个类似 Twitter 的应用。

1. 技术栈选择: #

  • 前端:Vue.js, TailwindCSS
  • 后端:Java (可以使用 Spring Boot 框架,因为它集成了很多有用的功能并且适合构建 Web 项目)
  • 数据库:MySQL

2. 功能设计: #

用户模块: #

  1. 注册:允许用户创建账号。需要用户名、密码(密码会被加盐和哈希后保存)。
  2. 登录:通过用户名和密码验证用户。
  3. 用户个人主页:展示该用户的所有帖子。
  4. 图片验证码:在登录和注册页面添加验证码,增加安全性。

帖子模块: #

  1. 发帖:用户可以发布纯文本帖子,并可以选择上传图片
  2. 编辑:用户可以编辑自己的帖子。
  3. 删除:用户可以删除自己的帖子。
  4. 查看:每个帖子下面都可以看到相关评论。

评论模块: #

  1. 评论:用户可以在任何帖子下发表评论。
  2. 删除:用户可以删除自己的评论。

3. 数据库设计: #

  1. 用户表
    • user_id (主键)
    • username (唯一)
    • hashed_password (使用 MD5+Salt)
  2. 帖子表
    • post_id (主键)
    • user_id (外键,与用户表关联)
    • content (帖子内容)
    • post_date (发布日期)
    • image_path (存储上传的图片路径)
  3. 评论表
    • comment_id (主键)
    • post_id (外键,与帖子表关联)
    • user_id (外键,与用户表关联)
    • content (评论内容)
    • comment_date (发布日期)

4. 安全性考虑: #

  1. 密码安全性:使用 MD5 加密配合盐值 (Salt) 对密码进行哈希,确保数据库中存储的是哈希后的密码。
  2. 防止 XSS 攻击:过滤用户提交的内容,确保不包含 HTML 或 JavaScript 代码。
  3. 防范 SQL 注入:使用参数化查询或 ORM 工具来处理用户输入,确保不执行恶意的 SQL 代码。
  4. 限制用户权限:例如,新用户必须经过验证才能发帖或评论。

更新于: 2023 年 10 月 11 日