日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

php怎么查询数据库密码,如何验证php中的密码是通过mysql查询手动散列插入到数据库中的?...

發布時間:2023/12/10 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php怎么查询数据库密码,如何验证php中的密码是通过mysql查询手动散列插入到数据库中的?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有沒有辦法通過自己的散列方法插入mysql數據庫的php驗證密碼?

例如,如果我手動在表中插入用戶數據,請假設用戶表,如下所示:

INSERT INTO users (email, pswd) VALUES ('demo@example.com', SHA1('pass123'));

讓我們假設mysql數據庫中的哈希密碼是:

+------------------------------------------+

| pswd |

+------------------------------------------+

| AAFDC23870ECBCD3D557B6423A8982134E17927E |

+------------------------------------------+

現在,我想使用php創建一個登錄表單,當用戶插入憑據時,他們應該能夠登錄.我的意思是,用戶不會有任何php注冊表單;密碼將手動提供.但是如何驗證用戶在php中提供的數據與存儲在mysql數據庫中的密碼?

據我所知,php中的password_verify()只有在使用自己的password_hash()函數對密碼進行哈希處理時才有效.

我找到了另一個解決方案,就是再次使用sql查詢,就像這樣 –

SELECT pswd FROM users WHERE email='$_POST["email"]' AND pswd = md5($_POST["password"]);

然后通過計算執行該mysql查詢的任何行返回的結果集,從而驗證.但是,這對我來說似乎是一個非常糟糕的方法.我不知道是否還有其他辦法.必須有一些好方法來解決這個問題.或者,可能是我必須使用另一個PHP表單將數據插入數據庫.

您的建議非常感謝.謝謝.

解決方法:

我建議你使用password_hash()并將結果哈希存儲在數據庫中.

INSERT INTO users SET email=?, pswd=?

如果需要手動插入密碼,可以使用快速命令行PHP腳本將其轉換為哈希.例如:

使用phpmyadmin或mysql客戶端手動將密碼插入數據庫時??,請使用此字符串.

避免將密碼放入SQL查詢中的文字字符串中是個好主意,即使您使用SQL函數對其進行散列也是如此.請記住,查詢日志和二進制日志中記錄了整個SQL字符串 – 未散列.

稍后,在驗證登錄時,獲取密碼哈希,如下所示:

SELECT pswd FROM users WHERE email=?

然后你的PHP代碼有哈希.您可以使用password_verify().

P.S.:請學習使用參數化查詢,不要在SQL查詢中使用$_POST變量.這是一個SQL注入漏洞.

標簽:php,mysql

來源: https://codeday.me/bug/20190727/1549889.html

總結

以上是生活随笔為你收集整理的php怎么查询数据库密码,如何验证php中的密码是通过mysql查询手动散列插入到数据库中的?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。