2021年3月

短信验证码安全验收标准

作为用户,我可以通过手机号和短信验证码登录,以便于更方便的登录。

安全验收标准:

  • 短信验证码有效期 2 分钟
  • 验证码为 6 位纯数字
  • 每个手机号 60 秒内只能发送一次短信验证码,且这一规则的校验必须在服务器端执行
  • 同一个手机号在同一时间内可以有多个有效的短信验证码
  • 保存于服务器端的验证码,至多可被使用 3 次(无论和请求中的验证码是否匹配),随后立即作废,以防止暴力攻击
  • 短信验证码不可直接记录到日志文件
  • 如登陆场景则需判断手机号是否已注册
  • (建议)发送短信验证码之前,先验证图形验证码是否正确
  • (可选)集成第三方 API 做登录保护(服务器在处理登录请求的时候,尽可能多的收集该请求的上下文信息,例如登录请求的来源IP地址,时间,手机号,User-Agent等等数据,并且把这些数据传递给第三方API,由他们进行一次分析判断,并把结果返回给服务器,告诉服务器当前请求者是可信用户还是可疑用户)
  • 应该可以通过配置白名单的方式,只向特定手机号码发送验证码,以免在非生产环境测试时发生打扰真实用户的事故
  • 应该可以通过配置 By Pass 的方式,在特定环境禁用短信验证码发送,并总是验证通过,以便在非生产环境节约短信配额
  • APP可以直接走移动供应商手机验证

使用gitolite搭建git服务器并自定义仓库目录

官网:https://gitolite.com/gitolite/index.html

安装:
su - git
mkdir -p ~/bin
git clone https://github.com/sitaramc/gitolite
gitolite/install -ln ~/bin # please use absolute path here
gitolite setup -pk yourname.pub

其中yourname.pub为管理员git公钥。git 跟 gitolite 服务器通信用的是 git 这个真正的系统用户,而 gitolite 控制仓库权限则是使用自己的虚拟用户。这里的 yourname 就是虚拟用户。

gitolite提供了一个 gitolite-shell。当你使用 ssh 访问 gitolite 时 ssh 服务会启动 gitolite-shell。这个脚本会检查当前用户是否有权限访问对应的仓库。如果用户通过 git push 修改了仓库内容,则会触发 gitolite 预先配置 git hook,这些 hook 会执行创建仓库、添加用户之类的操作。

下载主仓库:
git clone git@yourhost:gitolite-admin.git

通过对主仓库配置及公钥进行管理即可。

Gitolite自定义仓库目录
home/git/.gitolite.rc文件新增以下代码,并重新安装一次即可。

#sensen
GL_REPO_BASE    => "/diskb/git/repositories",