最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用MySQL加密函數(shù)保護(hù)Web網(wǎng)站敏感數(shù)據(jù)的方法分享

 更新時間:2012年03月01日 22:56:25   作者:  
如果您正在運(yùn)行使用MySQL的Web應(yīng)用程序,那么它把密碼或者其他敏感信息保存在應(yīng)用程序里的機(jī)會就很大
如果您正在運(yùn)行使用MySQL的Web應(yīng)用程序,那么它把密碼或者其他敏感信息保存在應(yīng)用程序里的機(jī)會就很大。保護(hù)這些數(shù)據(jù)免受黑客或者窺探者的獲取是一個令人關(guān)注的重要問題,因?yàn)槟炔荒茏屛唇?jīng)授權(quán)的人員使用或者破壞應(yīng)用程序,同時還要保證您的競爭優(yōu)勢。幸運(yùn)的是,MySQL帶有很多設(shè)計用來提供這種類型安全的加密函數(shù)。本文概述了其中的一些函數(shù),并說明了如何使用它們,以及它們能夠提供的不同級別的安全。

  雙向加密

  就讓我們從最簡單的加密開始:雙向加密。在這里,一段數(shù)據(jù)通過一個密鑰被加密,只能夠由知道這個密鑰的人來解密。MySQL有兩個函數(shù)來支持這種類型的加密,分別叫做ENCODE()和DECODE()。下面是一個簡單的實(shí)例:

  mysql> INSERT INTO users (username, password) VALUES ('joe', ENCODE('guessme', 'abracadabra'));

  Query OK, 1 row affected (0.14 sec)

  其中,Joe的密碼是guessme,它通過密鑰abracadabra被加密。要注意的是,加密完的結(jié)果是一個二進(jìn)制字符串,如下所示:

  mysql> SELECT * FROM users WHERE username='joe';

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

  | username | password |

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

  | joe | ?i??!? |

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

  1 row in set (0.02 sec)

  abracadabra這個密鑰對于恢復(fù)到原始的字符串至關(guān)重要。這個密鑰必須被傳遞給DECODE()函數(shù),以獲得原始的、未加密的密碼。下面就是它的使用方法:

  mysql> SELECT DECODE(password, 'abracadabra') FROM users WHERE username='joe';

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

  | DECODE(password, 'abracadabra') |

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

  | guessme |

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

  1 row in set (0.00 sec)

  應(yīng)該很容易就看到它在Web應(yīng)用程序里是如何運(yùn)行的——在驗(yàn)證用戶登錄的時候,DECODE()會用網(wǎng)站專用的密鑰解開保存在數(shù)據(jù)庫里的密碼,并和用戶輸入的內(nèi)容進(jìn)行對比。假設(shè)您把PHP用作自己的腳本語言,那么可以像下面這樣進(jìn)行查詢:

  $query = "SELECT COUNT(*) FROM users WHERE username='$inputUser' AND DECODE(password, 'abracadabra') = '$inputPass'";?>

  提示:雖然ENCODE()和DECODE()這兩個函數(shù)能夠滿足大多數(shù)的要求,但是有的時候您希望使用強(qiáng)度更高的加密手段。在這種情況下,您可以使用AES_ENCRYPT()和AES_DECRYPT()函數(shù),它們的工作方式是相同的,但是加密強(qiáng)度更高。

  單向加密

  單向加密與雙向加密不同,一旦數(shù)據(jù)被加密就沒有辦法顛倒這一過程。因此密碼的驗(yàn)證包括對用戶輸入內(nèi)容的重新加密,并將它與保存的密文進(jìn)行比對,看是否匹配。一種簡單的單向加密方式是MD5校驗(yàn)碼。MySQL的MD5()函數(shù)會為您的數(shù)據(jù)創(chuàng)建一個“指紋”并將它保存起來,供驗(yàn)證測試使用。下面就是如何使用它的一個簡單例子:

  mysql> INSERT INTO users (username, password) VALUES ('joe', MD5('guessme'));

  Query OK, 1 row affected (0.00 sec)

  mysql> SELECT * FROM users WHERE username='joe';

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

  | username | password |

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

  | joe | 81a58e89df1f34c5487568e17327a219 |

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

  1 row in set (0.02 sec)

  現(xiàn)在您可以測試用戶輸入的內(nèi)容是否與已經(jīng)保存的密碼匹配,方法是取得用戶輸入密碼的MD5校驗(yàn)碼,并將它與已經(jīng)保存的密碼進(jìn)行比對,就像下面這樣:

  mysql> SELECT COUNT(*) FROM users WHERE username='joe' AND password=MD5('guessme');

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

  | COUNT(*) |

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

  | 1 |

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

  1 row in set (0.00 sec)

  或者,您考慮一下使用ENCRYPT()函數(shù),它使用系統(tǒng)底層的crypt()系統(tǒng)調(diào)用來完成加密。這個函數(shù)有兩個參數(shù):一個是要被加密的字符串,另一個是雙(或者多)字符的“salt”。它然后會用salt加密字符串;這個salt然后可以被用來再次加密用戶輸入的內(nèi)容,并將它與先前加密的字符串進(jìn)行比對。下面一個例子說明了如何使用它:

  mysql> INSERT INTO users (username, password) VALUES ('joe', ENCRYPT('guessme', 'ab'));

  Query OK, 1 row affected (0.00 sec)

  mysql> SELECT * FROM users WHERE username='joe';

  +----------+---------------+
 | username | password |

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

  | joe | ab/G8gtZdMwak |

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

  1 row in set (0.00 sec)

  結(jié)果是

  mysql> SELECT COUNT(*) FROM users WHERE username='joe' AND password=ENCRYPT('guessme', 'ab');

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

  | COUNT(*) |

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

  | 1 |

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

  1 row in set (0.00 sec)

  提示:ENCRYPT()只能用在*NIX系統(tǒng)上,因?yàn)樗枰玫降讓拥腸rypt()庫。

相關(guān)文章

  • 分享15個Mysql索引失效的場景

    分享15個Mysql索引失效的場景

    這篇文章主要介紹了分享15個Mysql索引失效的場景,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • MySQL 隨機(jī)密碼生成代碼

    MySQL 隨機(jī)密碼生成代碼

    晚上有朋友問起,簡單的寫了一個。
    2009-09-09
  • mysql密碼正確無法登陸(host的問題)

    mysql密碼正確無法登陸(host的問題)

    本文主要介紹了mysql密碼正確無法登陸(host的問題),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • MYSQL拒絕訪問報錯not allowed to connect

    MYSQL拒絕訪問報錯not allowed to connect

    MYSQL拒絕訪問報錯not allowed to connect,下面有個可行的方法,可以在其它任何的主機(jī)上以root身份登錄
    2014-07-07
  • MySQL性能設(shè)置

    MySQL性能設(shè)置

    網(wǎng)站訪問量越來越大,MySQL自然成為瓶頸,因此最近我一直在研究 MySQL 的優(yōu)化,第一步自然想到的是 MySQL 系統(tǒng)參數(shù)的優(yōu)化
    2006-12-12
  • 基于mssql導(dǎo)mysql遇到的問題

    基于mssql導(dǎo)mysql遇到的問題

    本篇文章是對mssql導(dǎo)mysql遇到的問題,進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • mysql樹目錄查詢語句優(yōu)化提高查詢效率

    mysql樹目錄查詢語句優(yōu)化提高查詢效率

    在諸多的管理類,辦公類等系統(tǒng)中,樹形結(jié)構(gòu)展示隨處可見,本文主要介紹了mysql樹目錄查詢語句優(yōu)化提高查詢效率的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 導(dǎo)致mysqld無法啟動的一個錯誤問題及解決

    導(dǎo)致mysqld無法啟動的一個錯誤問題及解決

    這篇文章主要介紹了導(dǎo)致mysqld無法啟動的一個錯誤問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • mysql 5.7.17 winx64安裝配置圖文教程

    mysql 5.7.17 winx64安裝配置圖文教程

    這篇文章主要為大家分享了mysql 5.7.17 winx64安裝配置方法圖文教程,感興趣的朋友可以參考一下
    2017-01-01
  • MySQL定期分析檢查與優(yōu)化表的方法小結(jié)

    MySQL定期分析檢查與優(yōu)化表的方法小結(jié)

    聽DBA的人說,相比oracle,MySQL就是一個玩具級別的數(shù)據(jù)庫,在網(wǎng)易門戶中,DBA基本很少去管理到MySQL的東西,所以我們產(chǎn)品使用到的MySQL的一些配置和優(yōu)化還是需要我們開發(fā)人員自己動手,下面就簡單介紹一下實(shí)用的定期優(yōu)化方法
    2014-06-06

最新評論

红原县| 虹口区| 财经| 额济纳旗| 彩票| 五大连池市| 九龙坡区| 台中市| 德昌县| 梨树县| 府谷县| 苏尼特右旗| 安岳县| 澜沧| 汝阳县| 马鞍山市| 台湾省| 柳河县| 调兵山市| 中牟县| 特克斯县| 开江县| 武山县| 泗洪县| 天等县| 丽江市| 藁城市| 南通市| 濮阳县| 松滋市| 惠州市| 增城市| 康定县| 永新县| 南漳县| 九台市| 麻江县| 公主岭市| 桐庐县| 澄城县| 昌宁县|