不用框架、只用 PDO 和一点点路由,也能把一个博客跑起来;难的是那些不起眼的细节。
坑一:把用户输入直接拼进 SQL
最典型的错误。解决方式只有一个:所有查询都用预处理语句,包括 LIKE 查询的参数。
坑二:忘记转义输出
数据库里存的富文本,直接 echo 出去,就等于把 XSS 的钥匙交给了访客。稳妥的做法是:入库前不做 HTML 处理,出库时统一转义;需要排版就用受控的标记语法渲染。
坑三:CSRF 只做了一半
只在登录表单里加 token 是不够的,发布文章、删除评论、改密码,每一个写操作都要校验。
```php
if (!hash_equals($_SESSION['csrf_token'], $_POST['_token'] ?? '')) {
http_response_code(419);
exit('表单已过期');
}
```
坑四:上传只看扩展名
cover.php.jpg 这种文件名能骗过很多实现。用 getimagesize() 判断真实的 MIME 类型,再决定存不存。
坑五:忘记给列表页分页
数据少的时候一切正常,写到第 200 篇时首页开始变慢。分页要一开始就做,LIMIT ... OFFSET 配合索引足够用了。
小结
- 预处理语句
- 输出转义
- 全站 CSRF
- 校验真实文件类型
- 一开始就分页
这五件事做到,一个个人博客基本就站得住了。
评论~~~~