Closed Chigusa0w0 closed 3 years ago
摘要: 本脚本在用户导入设置时未能正确序列化黑名单列表和标签列表数据。本问题将导致不合法的序列化数据存入设置 LocalStorage,进而在用户重载页面后引发脚本全局错误,使脚本完全失效。
版本: 3.5
环境: Edge 86 on Windows 10 64-bit, Tampermonkey v4.11
详情: 在存入经解析的导入设置时,脚本会先解析设置字符串再将内容存入对应的 LocalStorage 条目内。脚本 https://github.com/kisshang1993/NGA-BBS-Script/blob/350d80ebacfe3dd4a4c274bb7a44f5466ed987c9/Script.js#L1118-L1119 和 https://github.com/kisshang1993/NGA-BBS-Script/blob/350d80ebacfe3dd4a4c274bb7a44f5466ed987c9/Script.js#L1122-L1123 均使用了 join 函数序列化数据数据,该数据在未经验证的情况下被立即写入 LocalStorage 条目。这可能导致序列化结果为逗号分隔的 "[object Object]" 的字符串覆盖现有设置。
join
"[object Object]"
由于上述字符串并不为合法的 Json 数据,在用户重载页面后,使用 JSON.parse 功能解析该数据将引发 Json 处理异常。特别地,对于标签列表,https://github.com/kisshang1993/NGA-BBS-Script/blob/350d80ebacfe3dd4a4c274bb7a44f5466ed987c9/Script.js#L159-L162 及后续回落流程也无法正确处理该无效数据,这会导致进一步的异常抛出。从而使脚本出现全局错误完全失效。只有在用户手动删除 LocalStorage 中对应的问题条目后脚本方可恢复正常使用。
JSON.parse
附: https://github.com/kisshang1993/NGA-BBS-Script/blob/350d80ebacfe3dd4a4c274bb7a44f5466ed987c9/Script.js#L149-L150 可能存在逻辑错误(漏写_bak) https://github.com/kisshang1993/NGA-BBS-Script/blob/350d80ebacfe3dd4a4c274bb7a44f5466ed987c9/Script.js#L443-L446 未验证用户输入
_bak
以上两处可能的问题未在本 Issue 对应的 PR 中修复
感谢问题反馈 问题已确认, 是由于3.3数据结构变化而遗漏了导入部分的数据处理而导致的问题, 此问题将在下个版本修复 _bak的确是逻辑错误, 是3.3升级版本时备份一份配置防止自动转换数据格式失败, 不过此行代码已经无效, 故下个版本一并删除
摘要: 本脚本在用户导入设置时未能正确序列化黑名单列表和标签列表数据。本问题将导致不合法的序列化数据存入设置 LocalStorage,进而在用户重载页面后引发脚本全局错误,使脚本完全失效。
版本: 3.5
环境: Edge 86 on Windows 10 64-bit, Tampermonkey v4.11
详情: 在存入经解析的导入设置时,脚本会先解析设置字符串再将内容存入对应的 LocalStorage 条目内。脚本 https://github.com/kisshang1993/NGA-BBS-Script/blob/350d80ebacfe3dd4a4c274bb7a44f5466ed987c9/Script.js#L1118-L1119 和 https://github.com/kisshang1993/NGA-BBS-Script/blob/350d80ebacfe3dd4a4c274bb7a44f5466ed987c9/Script.js#L1122-L1123 均使用了
join
函数序列化数据数据,该数据在未经验证的情况下被立即写入 LocalStorage 条目。这可能导致序列化结果为逗号分隔的"[object Object]"
的字符串覆盖现有设置。由于上述字符串并不为合法的 Json 数据,在用户重载页面后,使用
JSON.parse
功能解析该数据将引发 Json 处理异常。特别地,对于标签列表,https://github.com/kisshang1993/NGA-BBS-Script/blob/350d80ebacfe3dd4a4c274bb7a44f5466ed987c9/Script.js#L159-L162 及后续回落流程也无法正确处理该无效数据,这会导致进一步的异常抛出。从而使脚本出现全局错误完全失效。只有在用户手动删除 LocalStorage 中对应的问题条目后脚本方可恢复正常使用。附: https://github.com/kisshang1993/NGA-BBS-Script/blob/350d80ebacfe3dd4a4c274bb7a44f5466ed987c9/Script.js#L149-L150 可能存在逻辑错误(漏写
_bak
) https://github.com/kisshang1993/NGA-BBS-Script/blob/350d80ebacfe3dd4a4c274bb7a44f5466ed987c9/Script.js#L443-L446 未验证用户输入以上两处可能的问题未在本 Issue 对应的 PR 中修复