refactor(libmsg): 将审计结论合入代码注释并精简审计报告

- 在 libmsg 各头文件修复位置补充 [libmsg-audit <编号>] 标签(27 处),
  覆盖 16 条安全审计发现(P0-1/P0-2/P1-1~3/P2-1~8/P3-1~3),
  将已完成修复锚定到源码
- 从审计文档删除 335 行逐条详细发现(问题描述/修复方案/触发场景/代码块),
  替换为 16 行「已解决发现」紧凑台账 + 源码定位指针
- 文档保留:严重等级表、修复进度汇总、已有安全机制、已知限制 L-1~L-12、
  变更记录、审计结论
This commit is contained in:
qing committed 2026-08-10 01:26:10 +08:00
1 parent 373045f0a3
commit 685c5c1754
6 files changed
+156 -438

No files matched your search

+4 -2
View File
@@ -83,6 +83,7 @@ public:
* @param name 路由名(对应请求中的 _route 字段),不能为空
* @param handler 处理函数,签名 json::value(const json::object& req)
*/
// [libmsg-audit P2-3] 入口校验:name 与 handler 均非空,否则后续调用会崩溃。
void add_route(const std::string& name, Handler handler) {
if (name.empty()) {
throw MsgException("route name cannot be empty");
@@ -127,7 +128,7 @@ private:
json::object req = req_val.as_object();
// 提取 _route
// [libmsg-audit P3-2] 提取 _route:区分"字段缺失"与"类型不符"返回不同错误信息,避免误导客户端。
std::string route;
if (auto it = req.find("_route"); it != req.end() && it->value().is_string()) {
route = it->value().as_string().c_str();
@@ -181,9 +182,10 @@ private:
_server.reply(fd, json::serialize(resp));
}
// ---- 错误信息脱敏 ------------------------------------------------------
// ---- 错误信息脱敏 ------------------------------------------------------ [libmsg-audit P2-1]
// 匹配绝对路径(如 /opt/micro_servers/db/xxx.py 或 /usr/lib/...),替换为 <redacted>
// 不返回函数堆栈、SQL、文件路径等内部细节给客户端;完整异常由 on_error 钩子记录到服务端日志。
// 正则已扩展为 /\S+(?:\/\S*)*,覆盖含空格/括号/@/~ 等特殊字符的路径(原正则会泄露此类路径,CWE-209)。
static std::string _sanitize_error(const std::string& msg) {
if (msg.empty()) return msg;