前端如何安全地记录用户操作日志?
我们项目需要记录用户的关键操作,比如点击删除、提交表单这些行为,但又不能把敏感信息(比如 token 或用户密码)记进去。我试过用 console.log() 临时打点,但这显然不能用于生产。
现在想接入一个日志上报机制,但不确定该在前端直接发请求,还是只收集后由后端统一处理。另外,如果前端发日志接口,会不会被恶意刷请求?有没有比较稳妥的做法?
目前尝试了简单的 fetch 上报:
fetch('/api/log', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ action: 'delete_item', userId: currentUser.id })
})
但担心这样太裸,容易被滥用或者泄露信息。
首先把日志打成一个对象数组,定时批量上报而不是每次操作都发请求,这样能减少网络开销。比如每分钟合并一次:
加个简单的 token 防刷,后端验证通过才记录日志。敏感信息一律不记录,用
JSON.stringify前自己过滤一遍字段。记得开启 HTTPS,数据加密传输。后端要设置合理的频率限制,比如同一 IP 每秒最多发 5 次日志请求。这个方案兼顾了性能和安全,折腾一下就搞定了。说实话这比单纯靠后端处理要高效得多。