TinkoLiu / xd-meal-backend

Migrated
https://github.com/xd-meal/xd-meal-backend
0 stars 3 forks source link

安全相关 #3

Open iceprosurface opened 4 years ago

iceprosurface commented 4 years ago

密码相关

⚠️:如果需要输出日志,禁止输出任何用户输入的密码字段 ⚠️:创建的密码限定长度为 8-21 个字符

为了保证安全(阻止彩虹表暴力猜解密码),我们这里使用 SHA + 32 位随机 salt 保证即使管理员也无法反向猜解出密码

  1. 为什么不用 bcrypt ?

    bcrypt 相对 SHA 更麻烦一点,性能更差极端情况下(参数设置不合理)加密时间可能长达 80ms以上,node 本身对于这种 cpu 密集的运算能力就十分不友好(node v8 引擎无法在这里识别并在 JIT 优化,所以相比较 java/go 可以慢一个数量级)但是更安全,或许目前SHA已经足够安全?

  2. 为什么不添加额外的 configSalt 密码加 salt后 长度已经到达最少 40 位绝大多数的彩虹表并不会包含如此数量的密码

  1. randomString 是否足够随机以保证安全?

randomString 的随机程度并不足够,因为依靠 math.random 这个函数本身随机性存在问题

而 crypto.getRandomBytes 同样有问题,他在高位数部分存在显著的偏移

考虑是否使用 SHA 做 CSPRNG 来创建一个 密码学安全的散列 salt ?

admin 操作日志相关

admin 操作是否需要使用 IP + 操作者 + 操作时间记录每一次操作?

用户暴力猜解密码

因为没有设置上线,所以目前是可以暴力猜解密码的

TinkoLiu commented 4 years ago

密码

从设计上,并不允许通过企业微信登录的用户设置密码,所以可以认为需要考虑密码的用户,仅限于不具备管理权限的外包。

把认证什么的交给腾讯实在是太方便了.jpg,如果腾讯做不好这个我是不信的

以及就算心动的企业微信被爆破也是人事小改改的锅(或者星星)

admin 日志

你都说了,那就要吧

反正硬盘核心出,开销行政付

暴力猜解

其实无所谓,猜出来也是外包的号,企业微信授权账号根本不给密码

以及其实我想阻断企业微信导入的时候拿邮箱,反正有企业微信用户ID

发自我的iPhone

------------------ 原始邮件 ------------------ 发件人: iceprosurface <notifications@github.com> 发送时间: 2020年1月2日 15:04 收件人: TinkoLiu/xd-meal-backend <xd-meal-backend@noreply.github.com> 抄送: Subscribed <subscribed@noreply.github.com> 主题: 回复:[TinkoLiu/xd-meal-backend] 安全相关 (#3)

密码相关

⚠️:如果需要输出日志,禁止输出任何用户输入的密码字段 ⚠️:创建的密码限定长度为 8-21 个字符

为了保证安全(阻止彩虹表暴力猜解密码),我们这里使用 SHA + 32 位随机 salt 保证即使管理员也无法反向猜解出密码

为什么不用 bcrypt ?

bcrypt 相对 SHA 更麻烦一点,性能更差极端情况下(参数设置不合理)加密时间可能长达 80ms以上,node 本身对于这种 cpu 密集的运算能力就十分不友好(node v8 引擎无法在这里识别并在 JIT 优化,所以相比较 java/go 可以慢一个数量级)但是更安全,或许目前SHA已经足够安全?

为什么不添加额外的 configSalt 密码加 salt后 长度已经到达最少 40 位绝大多数的彩虹表并不会包含如此数量的密码

randomString 是否足够随机以保证安全?

randomString 的随机程度并不足够,因为依靠 math.random 这个函数本身随机性存在问题

而 crypto.getRandomBytes 同样有问题,他在高位数部分存在显著的偏移

考虑是否使用 SHA 做 CSPRNG 来创建一个 密码学安全的散列 salt ?

admin 操作日志相关

admin 操作是否需要使用 IP + 操作者 + 操作时间记录每一次操作?

用户暴力猜解密码

因为没有设置上线,所以目前是可以暴力猜解密码的

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.