exxhentai / flask

先把資料庫開起來先,提供一組索引用的API
3 stars 1 forks source link

認證系統API暨儲存資料 #10

Open r1235613 opened 5 years ago

r1235613 commented 5 years ago

主要資料大致如此,需討論問題如下

{
  "_id": "此處由MongoDB自動生成",
  "username": "Heatai",
  "password": "此處使用Bcrypt的雜湊",
  "application_password": [
    {
      "Exhentai_viewer": "Mws2HuSfgm6K5NqCQjYk...trQ4WVz3Mj"
    }
  ],
  "email": "Someone@example.com",
  "group": [],
  "email_verified": true,
  "email_change_lock": 1565154307,
  "create_time": 1565144307,
  "valid_since": 1565144307,
  "enable": true
}
r1235613 commented 5 years ago

API 1 POST:https://example.com/v1/auth/login 此端口用於獲取登入憑證,為長期的憑證,可以由前端儲存登入狀態使用。 是說這邊想要做個驗證碼,讓前端用get來獲取base 64編碼的圖片,之後將圖片的名稱與使用者的回覆議起送過來應該會比較安全? Request Body:

參數名 說明 範例
username 帳號 Heatai
password 密碼 Pa$$vv0rd

Response: code: 200 一個jwt簽署的令牌

{
  "sub": "Mongo的id",
  "iss": "example.com",
  "aud": "前端的網址",
  "iat": 1565144307,
  "remember": true,
  "type": "login_credential"
}

code: 403


{
  "msg": "The username or password is incorrect"
}
misaka10055 commented 5 years ago
r1235613 commented 5 years ago

好,那這部分我認領了

misaka10055 commented 5 years ago

好,那這部分我認領了

嗯,那就麻烦你了

r1235613 commented 5 years ago

@zjdavid2 以下流程安全嗎? 使用者註冊->把帳號密碼的雜湊簽章寄到他填寫的信箱 使用者點選連結->進資料庫

另外,電子郵件怎麼,SMTP哪來?

misaka10055 commented 5 years ago

这个链接是永久有效的吗?如果是的话,这个链接如果泄露了就可能会有风险。。

电子邮件服务器我完全不会做。。之前尝试弄过但是一直发不出邮件,后来懒得弄了就改用 G Suite了

r1235613 commented 5 years ago

預計48小時有效,僅用於啟用帳戶,且不會登入 電子郵件我常用的是mailgun 問題在於bcrypt 雜湊後的密碼被寄出是否安全

misaka10055 commented 5 years ago

我觉得是没问题的。用 Hash 也推不出原密码。

我刚才在思考如果一位别有用心的人注册一大堆账号,然后用密码和Hash 尝试推出盐能不能推出来。

我目前的结论是推不出来。

r1235613 commented 5 years ago

@zjdavid2 不過目前沒有驗證碼,被大量註冊的可能性是100% 另外,鹽被解析出來也沒關係,反正每組hash的鹽都是隨機產生

r1235613 commented 5 years ago

扔前端專案徵詢意見了 https://github.com/exxhentai/rehentai-frontend/issues/5#issue-478427739

r1235613 commented 5 years ago
* 登入系统,我觉得像你写的这样做就没问题了。

* 验证码方面。我觉得现在传统的验证码效果不是很好。前期可以先不部署验证码,后期再添加。就目前来看,我感觉使用Google 的Recaptcha 是最好,最简便的(虽然大陆访问会有问题

* 货币制度可以基本沿用。上传档案加 GP 之类的。但是由于我们本身并没有存储服务器,GP 有什么用还得讨论一下(之前似乎是用来下载Archive的)

* 身份组也沿用吧。

  * 一个问题就是补档需不需要管理员权限。如果需要的话就不能让别人帮忙补档了,如果不需要的话我们可能还得审核(以防出现什么奇怪的东西)。

那TOTP有需要嗎?

misaka10055 commented 5 years ago

TOTP 很好用,可以作为一个可选项。让用户选择是否启用

r1235613 commented 5 years ago

你認為前端會想要寫FIDO嗎?

misaka10055 commented 5 years ago

FIDO 是指哪个,生物识别?

r1235613 commented 5 years ago

不僅是生物識別,實體金鑰或是手機都可以當作是FIDO裝置 bandicam2019-08-0916-07-03-158