# NestJS Question

# Passport的封装

编写LocalStrategy需要继承PassportStrategy(Strategy)PassportStrategy(Strategy)返回的类中,构造函数做的事情就是调用passport.use,同时将LocalStrategy中的validate方法放进callback中,而这个callback则传入真正的LocalStrategy的构造函数。自己编写的LocalStrategy需要作为providers传入,因此其初始化控制交给了Nest。至于LocalAuthGuard,需要继承AuthGuard('local'),这个local则指明了使用LocalStrategy作为验证的策略。

# Cookie签名

cookie签名需要一个secret,express中cookieOptions设置signed: true时,会读取request.secret进行签名,cookie-parser中间件负责设置request.secret

# 关于bcrypt中的Timing Attack

Timing Attack即时序攻击,例如密码毕竟时,通过返回时间长短得到密码位数错误信息。

bcrypt模块是否能够防范Timing Attack取决于compare方法的实现,而node bcrypt (opens new window)该模块实现了时序安全的比较方法CompareStrings (opens new window)

参考: