第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

使用不同于密碼的字段進(jìn)行 HTTP Basic 身份驗(yàn)證

使用不同于密碼的字段進(jìn)行 HTTP Basic 身份驗(yàn)證

PHP
慕神8447489 2023-10-15 15:44:09
在 Symfony 5 項(xiàng)目中,我有一個(gè)用戶實(shí)體,其中包含“ password ”(散列)和“ smsCode ”(純文本)字段。創(chuàng)建帳戶時(shí),首先使用smsCode進(jìn)行身份驗(yàn)證,直到用戶稍后設(shè)置密碼(然后我們在不為空時(shí)使用密碼并忽略smsCode)。我想要實(shí)現(xiàn)的目標(biāo):通過 HTTP Basic 進(jìn)行身份驗(yàn)證,但使用 smsCode 而不是哈希密碼。我設(shè)法通過編輯 LoginFormAuthenticator 上的功能,使用表單登錄來完成這項(xiàng)工作checkCredentials():我可以使用短信代碼而不是密碼通過表單登錄。但是,當(dāng)我嘗試通過 HTTP Basic 進(jìn)行身份驗(yàn)證時(shí),checkAuthentication()會調(diào)用 DaoAuthenticationProvider.php 上的函數(shù),并且此類會使用$user->getPassword(). 有什么方法可以覆蓋/擴(kuò)展此checkAuthentication()函數(shù),以便我可以首先檢查純 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()函數(shù)以首先檢查短信代碼:public function getPassword(): string{    if (!empty($this->smsCode)) {        return (string) $this->smsCode;    } else {        return (string) $this->password;    }}不幸的是,由于密碼是經(jīng)過哈希處理的,因此它在身份驗(yàn)證時(shí)不斷失敗,因?yàn)樗趯ふ?smsCode 的哈希版本(DaoAuthenticationProvider.php 中的函數(shù)isPasswordValid())(順便說一下,當(dāng)提供密碼而不是短信代碼時(shí),身份驗(yàn)證效果很好)
查看完整描述

1 回答

?
精慕HU

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊

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

然后,當(dāng)使用 HTTPAuth 時(shí),您可以簡單地引用此“hashedSMS”字符串而不是哈希密碼字符串,以進(jìn)行比較。


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

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

這種身份驗(yàn)證方法只能作為最后的手段。

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

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


查看完整回答
反對 回復(fù) 2023-10-15
  • 1 回答
  • 0 關(guān)注
  • 117 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號