亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用不同于密碼的字段進行 HTTP Basic 身份驗證

使用不同于密碼的字段進行 HTTP Basic 身份驗證

PHP
慕神8447489 2023-10-15 15:44:09
在 Symfony 5 項目中,我有一個用戶實體,其中包含“ password ”(散列)和“ smsCode ”(純文本)字段。創建帳戶時,首先使用smsCode進行身份驗證,直到用戶稍后設置密碼(然后我們在不為空時使用密碼并忽略smsCode)。我想要實現的目標:通過 HTTP Basic 進行身份驗證,但使用 smsCode 而不是哈希密碼。我設法通過編輯 LoginFormAuthenticator 上的功能,使用表單登錄來完成這項工作checkCredentials():我可以使用短信代碼而不是密碼通過表單登錄。但是,當我嘗試通過 HTTP Basic 進行身份驗證時,checkAuthentication()會調用 DaoAuthenticationProvider.php 上的函數,并且此類會使用$user->getPassword(). 有什么方法可以覆蓋/擴展此checkAuthentication()函數,以便我可以首先檢查純 smsCode ( $user->getSmsCode()) 而不是哈希密碼?#security:encoders:    App\Entity\User:        algorithm: autoproviders:    # used to reload user from session & other features (e.g. switch_user)    app_user_provider:        entity:            class: App\Entity\User            property: emailfirewalls:    dev:        # profiler (dev only)        pattern: ^/(_(profiler|wdt)|css|images|js)/        security: false    main:        anonymous: true        lazy: true        provider: app_user_provider        http_basic: true        guard:            authenticators:                - App\Security\LoginFormAuthenticator        logout:            path: app_logout我嘗試編輯我的getPassword()函數以首先檢查短信代碼:public function getPassword(): string{    if (!empty($this->smsCode)) {        return (string) $this->smsCode;    } else {        return (string) $this->password;    }}不幸的是,由于密碼是經過哈希處理的,因此它在身份驗證時不斷失敗,因為它正在尋找 smsCode 的哈希版本(DaoAuthenticationProvider.php 中的函數isPasswordValid())(順便說一下,當提供密碼而不是短信代碼時,身份驗證效果很好)
查看完整描述

1 回答

?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

為了保持邏輯(和代碼)流程相同,您當前已經將哈希密碼作為目標變量,因此當您生成短信代碼時,您可以將短信代碼的哈希版本添加到數據庫中以用作哈希密碼值的替代品。

然后,當使用 HTTPAuth 時,您可以簡單地引用此“hashedSMS”字符串而不是哈希密碼字符串,以進行比較。


注意:為了安全;SMScode 應具有足夠的熵,因此應足夠長 - 通常長于 8 個字符。

通常,在當前的生態系統中,短信代碼比密碼更短、更簡單,而且由于它們的傳輸方法(通過手機短信)極其不安全且容易被竊聽和攔截,這使代碼成為應用程序安全性的弱點。

這種身份驗證方法只能作為最后的手段。

  • 也作為最后的旁注;許多網站使用 SMS 代碼作為“雙因素身份驗證”方法,盡管這不是 2FA,而且這種形式的身份驗證很容易被濫用和泄露。

    事實上,大多數大型網絡企業詢問您的手機號碼只是為了“安全”,實際上只是為了收集電話號碼以與您的帳戶連接以用于自己的跟蹤和營銷目的,同時聲稱這是某種形式的“更好的安全性” ”。


查看完整回答
反對 回復 2023-10-15
  • 1 回答
  • 0 關注
  • 103 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號