lyswhut / lx-music-sync-server

运行在Node.js上的LX Music数据同步服务
Apache License 2.0
491 stars 139 forks source link

用户密码长度缺陷问题 #28

Closed lyswhut closed 1 year ago

lyswhut commented 1 year ago

由于该项目的原始代码来自PC端的同步服务,本项目的用户密码等于PC端同步服务的连接码,当初设计PC端连接码时预计只有6位纯数字,所以没有考虑复杂连接码的情况,就随便弄了个简单的校验方式:

https://github.com/lyswhut/lx-music-sync-server/blob/30b172bdf9e1400f0c784b4c2c5a3927b8f438ae/src/server/auth.ts#L46

即:将连接码(密码)以UTF-8编码读取并转hex后取前16位(如果长度不够将重复填充到16位)作为密码。 所以导致现在出现的一个问题是设置的用户密码只有前16个hex有效,16位之后的字符将被丢弃,导致当设置的密码超过一定长度后,连接时不用输入完整的密码都可以连接成功。 一般情况下一个数字、英文字符占2个hex,一个中文字符占6个hex, 这意味着如果你的密码是数字、英文字符的话,只有前8位有效,中文字符只有前三个字有效

由于这涉及各端的修改,所以计划在下个大版本再修复它

lyswhut commented 1 year ago

已在v2.0.0修复