fix: 拒绝保存未来日期的记录(防止改手机时间污染数据)
用户改手机时间到未来,record.date 就会变成未来时间, 推上云后污染排行榜统计。saveRecord 增加 1 分钟宽容度的 未来时间校验,触发时 toast 提示 + 静默拒绝保存。
This commit is contained in:
@@ -49,6 +49,18 @@ const getRecords = () => {
|
||||
|
||||
const saveRecord = (record) => {
|
||||
record.id = String(Date.now()) + '_' + (++_idSeq)
|
||||
|
||||
// Defensive: reject records with a future date. Indicates the user has
|
||||
// changed their phone clock, which would otherwise poison the cloud
|
||||
// leaderboard (and their own stats) with impossible timestamps. Allow
|
||||
// a 1-minute tolerance for normal clock skew.
|
||||
const recordTime = new Date(record.date.replace(/-/g, '/')).getTime()
|
||||
if (recordTime > Date.now() + 60 * 1000) {
|
||||
console.warn('[storage] saveRecord rejected: future date', record.date)
|
||||
wx.showToast({ title: '系统时间异常,请检查', icon: 'none' })
|
||||
return
|
||||
}
|
||||
|
||||
const records = getRecords()
|
||||
const month = record.date.substring(0, 7)
|
||||
if (!records[month]) records[month] = []
|
||||
|
||||
Reference in New Issue
Block a user