MYSQL數(shù)據(jù)庫系統(tǒng)安全管理_第1頁
MYSQL數(shù)據(jù)庫系統(tǒng)安全管理_第2頁
MYSQL數(shù)據(jù)庫系統(tǒng)安全管理_第3頁
MYSQL數(shù)據(jù)庫系統(tǒng)安全管理_第4頁
MYSQL數(shù)據(jù)庫系統(tǒng)安全管理_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、MYSQL 數(shù)據(jù)庫系統(tǒng)安全管理目錄正文 .11 研究的背景 .12 研究的目的和意義.13 研究的內(nèi)容 .23.1 MySQL 數(shù)據(jù)庫的安全配置 .23.1.1 系統(tǒng)內(nèi)部安全 .23.1.2 外部網(wǎng)絡(luò)安全 .43.2 MySQL 用戶帳號管理 .83.3 MD5 加密 .113.3.1 數(shù)據(jù)庫中數(shù)據(jù)加密的原因 .113.3.2 加密方式 .123.3.3 Md5 加密原理.123.3.4 具體算法 .134 總結(jié) .14參考文獻(xiàn): .15附錄: .15MySQL 數(shù)據(jù)庫安全管理摘要摘要: MySQL 是完全網(wǎng)絡(luò)化的跨平臺關(guān)系型數(shù)據(jù)庫系統(tǒng),同時(shí)是具有客戶機(jī)/服務(wù)器體系結(jié)構(gòu)的分布式數(shù)據(jù)庫管理系統(tǒng)。

2、它具有功能強(qiáng)、使用簡便、管理方便、運(yùn)行速度快、安全可靠性強(qiáng)等優(yōu)點(diǎn),用戶可利用許多語言編寫訪問 MySQL 數(shù)據(jù)庫的程序,特別是與 PHP 更是黃金組合,運(yùn)用十分廣泛。由于 MySQL 是多平臺的數(shù)據(jù)庫,它的默認(rèn)配置要考慮各種情況下都能適用,所以在用戶自己的使用環(huán)境下應(yīng)該進(jìn)行安全加固。用戶有責(zé)任維護(hù) MySQL 數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)安全性和完整性。關(guān)鍵詞關(guān)鍵詞:MYSQLMYSQL;數(shù)據(jù)庫;數(shù)據(jù)庫安全;訪問控制;數(shù)據(jù)庫;數(shù)據(jù)庫安全;訪問控制;MD5MD5 加密加密正文正文MySQL 數(shù)據(jù)庫的安全配置必須從兩個(gè)方面入手,系統(tǒng)內(nèi)部安全和外部網(wǎng)絡(luò)安全;MySQL 用戶帳號管理主要用 grant(授權(quán))和

3、revoke(撤權(quán))兩個(gè) SQL 指令來管理;MD5在實(shí)際中的一個(gè)應(yīng)用就是對數(shù)據(jù)庫中的用戶信息加密,當(dāng)用戶創(chuàng)建一個(gè)新的賬號或者密碼,他的信息不是直接保存到數(shù)據(jù)庫,而是經(jīng)過一次加密以后再保存,這樣,即使這些信息被泄露,也不能立即理解這些信息的真正含義。有效的提高了前臺和后臺的數(shù)據(jù)安全性。【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.1 研究的背景隨著計(jì)算機(jī)技術(shù)和信息技術(shù)的迅速發(fā)展。數(shù)據(jù)庫的應(yīng)用十分廣泛,深入到各個(gè)領(lǐng)域,但隨之而來產(chǎn)生了數(shù)據(jù)的安全問題。近年來,數(shù)據(jù)庫供應(yīng)商競相為大眾提供功能豐富的數(shù)據(jù)庫環(huán)境,大多數(shù)主要系統(tǒng)都支持 XML、Web 服務(wù)、分布式復(fù)制、操作系統(tǒng)集成以及其

4、他一些有用的功能。與以前相比,數(shù)據(jù)庫更加容易遭受到攻擊,它已經(jīng)成為了更有價(jià)值的攻擊目標(biāo),所以需要配置更多的安全功能,管理也要更加的謹(jǐn)慎。2 研究的目的和意義本文對 MySQL 數(shù)據(jù)庫的安全配置、MySQL 用戶帳號管理以及使用 MD5 加密提高數(shù)據(jù)庫前臺和后臺數(shù)據(jù)安全性做了詳細(xì)研究。由于 MySQL 是多平臺的數(shù)據(jù)庫,它的默認(rèn)配置要考慮各種情況下都能適用,所以用戶需要根據(jù)具體的環(huán)境進(jìn)行相關(guān)的安全配置,通過本文的研究,對如何提高數(shù)據(jù)庫的安全性有很大的幫助。 3 研究的內(nèi)容3.1 MySQL 數(shù)據(jù)庫的安全配置3.1.1 系統(tǒng)內(nèi)部安全MySQL 安裝好,運(yùn)行了 mysql_db_install 腳本

5、以后就會建立數(shù)據(jù)目錄和初始化數(shù)據(jù)庫。如果我們用 MySQL 源碼包安裝,而且安裝目錄是/usr/local/mysql,那么數(shù)據(jù)目錄一般會是/usr/local/mysql/var。數(shù)據(jù)庫系統(tǒng)由一系列數(shù)據(jù)庫組成,每個(gè)數(shù)據(jù)庫包含一系列數(shù)據(jù)庫表。MySQL 是用數(shù)據(jù)庫名在數(shù)據(jù)目錄建立建立一個(gè)數(shù)據(jù)庫目錄,各數(shù)據(jù)庫表分別以數(shù)據(jù)庫表名作為文件名,擴(kuò)展名分別為 MYD、MYI、frm 的三個(gè)文件放到數(shù)據(jù)庫目錄中。MySQL 的授權(quán)表給數(shù)據(jù)庫的訪問提供了靈活的權(quán)限控制,但是如果本地用戶擁有對庫文件的讀權(quán)限的話,攻擊者只需把數(shù)據(jù)庫目錄打包拷走,然后拷到自己本機(jī)的數(shù)據(jù)目錄下就能訪問竊取的數(shù)據(jù)庫。所以 MySQL

6、 所在的主機(jī)的安全性是最首要的問題,如果主機(jī)不安全,被攻擊者控制,那么 MySQL 的安全性也無從談起。其次就是數(shù)據(jù)目錄和數(shù)據(jù)文件的安全性,也就是權(quán)限設(shè)置問題。從 MySQL 主站一些老的 binary 發(fā)行版來看,3.21.xx 版本中數(shù)據(jù)目錄的屬性是775,這樣非常危險(xiǎn),任何本地用戶都可以讀數(shù)據(jù)目錄,所以數(shù)據(jù)庫文件很不安全?!揪肺臋n】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.3.22.xx 版本中數(shù)據(jù)目錄的屬性是 770,這種屬性也有些危險(xiǎn),本地的同組用戶既能讀也能寫,所以數(shù)據(jù)文件也不安全。3.23.xx 版本數(shù)據(jù)目錄的屬性是 700,這樣就比較好,只有啟動(dòng)數(shù)據(jù)庫的用戶可以讀寫

7、數(shù)據(jù)庫文件,保證了本地?cái)?shù)據(jù)文件的安全。如果啟動(dòng) MySQL 數(shù)據(jù)庫的用戶是 mysql,那么像如下的目錄和文件的是安全的,請注意數(shù)據(jù)目錄及下面的屬性:shellls -l /usr/local/mysqltotal 40drwxrwxr-x 2 root root 4096 Feb 27 20:07 bindrwxrwxr-x 3 root root 4096 Feb 27 20:07 includedrwxrwxr-x 2 root root 4096 Feb 27 20:07 infodrwxrwxr-x 3 root root 4096 Feb 27 20:07 libdrwxrwxr-

8、x 2 root root 4096 Feb 27 20:07 libexecdrwxrwxr-x 3 root root 4096 Feb 27 20:07 manshellls -l /usr/local/mysql/vartotal 8drwx- 2 mysql mysql 4096 Feb 27 20:08 mysqldrwx- 2 mysql mysql 4096 Feb 27 20:08 testshellls -l /usr/local/mysql/var/mysqltotal 104-rw- 1 mysql mysql 0 Feb 27 20:08 columns_priv.M

9、YD-rw- 1 mysql mysql 1024 Feb 27 20:08 columns_priv.MYI-rw- 1 mysql mysql 8778 Feb 27 20:08 columns_priv.frm-rw- 1 mysql mysql 302 Feb 27 20:08 db.MYD-rw- 1 mysql mysql 3072 Feb 27 20:08 db.MYI-rw- 1 mysql mysql 8982 Feb 27 20:08 db.frm-rw- 1 mysql mysql 0 Feb 27 20:08 func.MYD-rw- 1 mysql mysql 102

10、4 Feb 27 20:08 func.MYI-rw- 1 mysql mysql 8641 Feb 27 20:08 func.frm-rw- 1 mysql mysql 0 Feb 27 20:08 host.MYD【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.-rw- 1 mysql mysql 1024 Feb 27 20:08 host.MYI-rw- 1 mysql mysql 8958 Feb 27 20:08 host.frm-rw- 1 mysql mysql 0 Feb 27 20:08 tables_priv.MYD-rw- 1 mysql mysql

11、1024 Feb 27 20:08 tables_priv.MYI如果這些文件的屬主及屬性不是這樣,請用以下兩個(gè)命令修正之:shellchown -R mysql.mysql /usr/local/mysql/varshellchmod -R go-rwx /usr/local/mysql/var用 root 用戶啟動(dòng)遠(yuǎn)程服務(wù)一直是安全大忌,因?yàn)槿绻?wù)程序出現(xiàn)問題,遠(yuǎn)程攻擊者極有可能獲得主機(jī)的完全控制權(quán)。MySQL 從 3.23.15 版本開始時(shí)作了小小的改動(dòng),默認(rèn)安裝后服務(wù)要用 mysql 用戶來啟動(dòng),不允許 root 用戶啟動(dòng)。如果非要用root 用戶來啟動(dòng),必須加上-user=root

12、 的參數(shù)(./safe_mysqld -user=root &)。因?yàn)?MySQL 中有 LOAD DATA INFILE 和 SELECT . INTO OUTFILE 的 SQL 語句,如果是 root 用戶啟動(dòng)了 MySQL 服務(wù)器,那么,數(shù)據(jù)庫用戶就擁有了 root 用戶的寫權(quán)限。不過 MySQL 還是做了一些限制的,比如 LOAD DATA INFILE 只能讀全局可讀的文件,SELECT . INTO OUTFILE 不能覆蓋已經(jīng)存在的文件。本地的日志文件也不能忽視,包括 shell 的日志和 MySQL 自己的日志。有些用戶在本地登陸或備份數(shù)據(jù)庫的時(shí)候?yàn)榱藞D方便,有時(shí)會在

13、命令行參數(shù)里直接帶了數(shù)據(jù)庫的密碼,如:shell/usr/local/mysql/bin/mysqldump -uroot -ptest testtest.sqlshell/usr/local/mysql/bin/mysql -uroot ptest這些命令會被 shell 記錄在歷史文件里,比如 bash 會寫入用戶目錄的.bash_history 文件,如果這些文件不慎被讀,那么數(shù)據(jù)庫的密碼就會泄漏。用戶登陸數(shù)據(jù)庫后執(zhí)行的 SQL 命令也會被 MySQL 記錄在用戶目錄的.mysql_history 文件里。如果數(shù)據(jù)庫用戶用 SQL 語句修改了數(shù)據(jù)庫密碼,也會因.mysql_history

14、 文件而泄漏。所以我們在 shell 登陸及備份的時(shí)候不要在-p 后直接加密碼,而是在提示后再輸入數(shù)據(jù)庫密碼。另外這兩個(gè)文件我們也應(yīng)該不讓它記錄我們的操作,以防萬一。shellrm .bash_history .mysql_historyshellln -s /dev/null .bash_history【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.shellln -s /dev/null .mysql_history上門這兩條命令把這兩個(gè)文件鏈接到/dev/null,那么我們的操作就不會被記錄到這兩個(gè)文件里了。3.1.2 外部網(wǎng)絡(luò)安全MySQL 數(shù)據(jù)庫安裝好以后,Unix

15、平臺的 user 表是這樣的:mysql use mysql;Database changedmysql select Host,User,Password,Select_priv,Grant_priv from user;圖 3.1.2.1 Unix 平臺的 user 表Windows 平臺的 user 表是這樣的:mysql use mysql;Database changedmysql select Host,User,Password,Select_priv,Grant_priv from user;圖 3.1.2.2 Windows 平臺的 user 表實(shí)際上 Unix 平臺的 My

16、SQL 默認(rèn)只允許本機(jī)才能連接數(shù)據(jù)庫。但是缺省 root 用戶口令是空,所以當(dāng)務(wù)之急是給 root 用戶加上口令。給數(shù)據(jù)庫用戶加口令有三種方法:在 shell 提示符下用 mysqladmin 命令來改 root 用戶口令:shellmysqladmin -uroot password test這樣,MySQL 數(shù)據(jù)庫 root 用戶的口令就被改成 test 了。用 set password 修改口令:mysql set password for rootlocalhost=password(test);這時(shí) root 用戶的口令就被改成 test 了。直接修改 user 表的 root 用戶

17、口令:【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.mysql use mysql;mysql update user set password=password(test) where user=root;mysql flush privileges;這樣,MySQL 數(shù)據(jù)庫 root 用戶的口令也被改成 test 了。其中最后一句命令flush privileges 的意思是強(qiáng)制刷新內(nèi)存授權(quán)表,否則用的還是緩沖中的口令,這時(shí)非法用戶還可以用 root 用戶及空口令登陸,直到重啟 MySQL 服務(wù)器。我們還看到 user 為空的匿名用戶,雖然它在 Unix 平臺下沒什么權(quán)限

18、,但為了安全起見我們應(yīng)該刪除它:mysql delete from user where user=;Windows 版本 MySQL 的 user 表有很大不同,我們看到 Host 字段除了 localhost還有是%。這里%的意思是允許任意的主機(jī)連接 MySQL 服務(wù)器,這是非常不安全的,給攻擊者造成可乘之機(jī),我們必須刪除 Host 字段為%的記錄:mysqldelete from user where host=%;默認(rèn) root 用戶的空密碼也是必須修改,三種修改方法和 Unix 平臺一樣。對 user表操作以后不要忘了用 flush privileges 來強(qiáng)制刷新內(nèi)存授權(quán)表,這樣才

19、能生效。MySQL 的 5 個(gè)授權(quán)表:user, db, host, tables_priv 和 columns_priv 提供非常靈活的安全機(jī)制,從 MySQL 3.22.11 開始引入了兩條語句 GRANT 和 REVOKE 來創(chuàng)建和刪除用戶權(quán)限,可以方便的限制哪個(gè)用戶可以連接服務(wù)器,從哪里連接以及連接后可以做什么操作。在 3.22.11 版本以前的 MySQL 授權(quán)機(jī)制不完善,和新版本也有較大的不同,建議升級到最新版本的 MySQL。我們先來了解授權(quán)表的結(jié)構(gòu)。MySQL 授權(quán)表的結(jié)構(gòu)與內(nèi)容:mysql desc user;user 表是 5 個(gè)授權(quán)表中最重要的一個(gè),列出可以連接服務(wù)器的用

20、戶及其加密口令,并且它指定他們有哪種全局(超級用戶)權(quán)限。在 user 表啟用的任何權(quán)限均是全局權(quán)限,并適用于所有數(shù)據(jù)庫。所以我們不能給任何用戶訪問 mysql.user 表的權(quán)限!權(quán)限說明:【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.圖 3.1.2.3 權(quán)限說明mysql desc db;圖 3.1.2.4 數(shù)據(jù)庫db 表列出數(shù)據(jù)庫,而用戶有權(quán)限訪問它們。在這里指定的權(quán)限適用于一個(gè)數(shù)據(jù)庫中的所有表。mysql desc host;【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.圖 3.1.2.5 host 表host 表與 db 表結(jié)合使用在一個(gè)較好層次上

21、控制特定主機(jī)對數(shù)據(jù)庫的訪問權(quán)限,這可能比單獨(dú)使用 db 好些。這個(gè)表不受 GRANT 和 REVOKE 語句的影響。3.2 MySQL 用戶帳號管理MySQL 用戶帳號管理主要用 grant(授權(quán))和 revoke(撤權(quán))兩個(gè) SQL 指令來管理。這兩個(gè)指令實(shí)質(zhì)是通過操作 user(連接權(quán)限和全局權(quán)限)、db(數(shù)據(jù)庫級權(quán)限)、tables_priv(數(shù)據(jù)表級權(quán)限)、columns_priv(數(shù)據(jù)列級權(quán)限)四個(gè)權(quán)限表來分配權(quán)限的。host 權(quán)限表不受這兩個(gè)指令影響。下面將會詳細(xì)介紹用戶權(quán)限管理的內(nèi)容。GRANT 語法說明:GRANT privileges (columns) #privilege

22、s 表示授予的權(quán)限,columns 表示作用的列(可選) ON what #設(shè)置權(quán)限級別,全局級、數(shù)據(jù)庫級、數(shù)據(jù)表級和數(shù)據(jù)列級TO account #權(quán)限授予的用戶,用user_namehost_name這種用戶名、主機(jī)名格式IDENTIFIED BY password #設(shè)置用戶帳號密碼REQUIRE encryption requirements #設(shè)置經(jīng)由 SSL 連接帳號WITH grant or resource management options; #設(shè)置帳號的管理和資源(連接服務(wù)器次數(shù)或查詢次數(shù)等)選項(xiàng)示例:mysqlgrant all on db.* to testlocal

23、host identified by test;上例運(yùn)行后的效果是,test 用戶只能通過test密碼從本機(jī)訪問 db 數(shù)據(jù)庫【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.mysqlgrant all on db.* to test% identified by test;上例運(yùn)行后的效果是,test 用戶可通過test密碼從任意計(jì)算機(jī)上訪問 db 數(shù)據(jù)庫。 %代表任意字符, _代表一個(gè)任意字符。主機(jī)名部份還可以是 IP 地址。表 3.2.1 訪問權(quán)限表權(quán)限權(quán)限說明CREATE TEMPORARY TABLES創(chuàng)建臨時(shí)數(shù)據(jù)表EXECUTE執(zhí)行存儲過程(暫不支持)FILE操作系

24、統(tǒng)文件GRANT OPTION可把本帳號的權(quán)限授予其它用戶LOCK TABLES鎖定指定數(shù)據(jù)表PROCESS查看運(yùn)行著的線程信息RELOAD重新加載權(quán)限表或刷新日志及緩沖區(qū)REPLICATION CLIENT可查詢主/從服務(wù)器主機(jī)名REPLICATION SLAVE運(yùn)行一個(gè)鏡像從服務(wù)器SHOW DATABASES可運(yùn)行 SHOW DATABASES 指令SHUTDOWN關(guān)閉數(shù)據(jù)庫服務(wù)器SUPER可用 kill 終止線程以及進(jìn)行超級用戶操作ALTER可修改表和索引的結(jié)構(gòu)CREATE創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表DELETE刪除數(shù)據(jù)表中的數(shù)據(jù)行DROP刪除數(shù)據(jù)表和數(shù)據(jù)行INDEX建立或刪除索引INSERT插入

25、數(shù)據(jù)行REFERENCES(暫時(shí)不支持)SELECT查詢數(shù)據(jù)行UPDATE更新數(shù)據(jù)行ALL所有權(quán)限,但不包括 GRANT。USAGE無權(quán)限權(quán)限表 3.2.2 權(quán)限作用范圍(由 ON 子句設(shè)置)【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.權(quán)限限定符作用范圍ON *.*全局級權(quán)限,作用于所有數(shù)據(jù)庫ON *全局級權(quán)限,若未指定默認(rèn)數(shù)據(jù)庫,其作用范圍是所有數(shù)據(jù)庫,否則,其作用范圍是當(dāng)前數(shù)據(jù)庫ON db_name.*數(shù)據(jù)庫級權(quán)限,作用于指定數(shù)據(jù)庫里的所有數(shù)據(jù)表ON db_name.tbl_name數(shù)據(jù)表級權(quán)限,作用于數(shù)據(jù)表里的所有數(shù)據(jù)列ON tbl_name數(shù)據(jù)表級權(quán)限,作用于默認(rèn)數(shù)

26、據(jù)庫中指定的數(shù)據(jù)表里的所有數(shù)據(jù)列USAGE 權(quán)限的用法:修改與權(quán)限無關(guān)的帳戶項(xiàng),如:mysqlGRANT USAGE ON *.* TO account IDENTIFIED BY new_password; #修改密碼mysqlGRANT USAGE ON *.* TO account REQUIRE SSL; #啟用 SSL 連接mysqlGRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR 10;#設(shè)置資源 擁有 WITH GRANT OPTION 權(quán)限的用戶可把自已所擁用的權(quán)限轉(zhuǎn)授給其他用戶,如:mysqlGRANT A

27、LL ON db.* TO test% IDENTIFIED BY password WITH GRANT OPTION;這樣 test 用戶就有權(quán)把該權(quán)限授予其他用戶。限制資源使用,如:mysqlGRANT ALL ON db.* TO account IDENTIFIED BY password WITH MAX_CONNECTIONS_PER_HOUR 10 MAX_QUERIES_PER_HOUR 200 MAX_UPDATES_PER_HOUR 50;允許 account 用戶每小時(shí)最多連接 20 次服務(wù)器,每小時(shí)最多發(fā)出 200 條查詢命令(其中更新命令最多為 50 條)默認(rèn)都是零

28、值,即沒有限制。FLUSH USER_RESOURCES 和 FLUSH PRIVILEGES 可對資源限制計(jì)數(shù)器清零。REVOKE 語法說明:mysqlREVOKE privileges (columns) ON what FROM account;【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.示例:mysqlREVOKE SELECT ON db.* FROM testlocalhost;刪除 test 帳號從本機(jī)查詢 db 數(shù)據(jù)庫的權(quán)限REVOKE 可刪除權(quán)限,但不能刪除帳號,即使帳號已沒有任何權(quán)限。所以 user 數(shù)據(jù)表里還會有該帳號的記錄,要徹底刪除帳號,需用 DE

29、LETE 命令刪除 user 數(shù)據(jù)表的記錄,如:% mysql -u root -pmysqluse mysqlmysqlDELETE FROM user where User=test and Host=localhost;mysql fulsh privileges;REVOKE 不能刪除 REQUIRE 和資源占用的配置。他們是要用 GRANT 來刪除的,如:GRANT USAGE ON *.* TO account REQUIRE NONE; #刪除 account 帳號的 SSL連接選項(xiàng)3.3 MD5 加密 3.3.1 數(shù)據(jù)庫中數(shù)據(jù)加密的原因現(xiàn)在網(wǎng)絡(luò)上一般的網(wǎng)站,稍微完善一點(diǎn)的,往往

30、都需要用戶先注冊,提供諸如電子郵件、賬號、密碼等信息以后,成為網(wǎng)站欄目的注冊用戶,才可以享受網(wǎng)站一些特殊欄目提供的信息或者服務(wù),比如免費(fèi)電子郵件、論壇、聊天等,都需要用戶注冊。而對于電子商務(wù)網(wǎng)站,比如 igo5 等大型電子商務(wù)網(wǎng)站,用戶需要購買商品,就一定需要詳細(xì)而準(zhǔn)確的注冊,而這些信息,往往是用戶很隱秘的信息,比如電話、電子郵件、地址等,所以,注冊信息對于用戶和網(wǎng)站都是很重要的資源,不能隨意透露,更加不能存在安全上的隱患。一般將用戶資料直接保存在數(shù)據(jù)庫中,并沒有進(jìn)行任何的保密措施,對于一些文件型數(shù)據(jù)庫比如 Access 等,如果有人得到這個(gè)文件,豈不是所有的資料都泄露無疑?更加重要的是,如果

31、一個(gè)不負(fù)責(zé)任的網(wǎng)管,不需要任何技術(shù)手段,就可以查看網(wǎng)站中的任何資料,如果我們的用戶信息在數(shù)據(jù)庫中沒有加密,對于網(wǎng)管而言,查看這些信息是太簡單了。所以,為了增加安全性,我們有必要對數(shù)據(jù)庫中的資料進(jìn)行加密,這樣,即使有人得到了整個(gè)數(shù)據(jù)庫,如果沒有解密算法,也一樣不能查看到數(shù)據(jù)庫中的【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.用戶信息。3.3.2 加密方式在現(xiàn)階段,我們一般認(rèn)為存在兩種加密方式,單向加密和雙向加密。雙向加密是加密算法中最常用的,它將我們可以直接理解的明文數(shù)據(jù)加密為我們不可直接理解的密文數(shù)據(jù),然后,在需要的時(shí)候,可以使用一定的算法將這些加密以后的密文解密為原來可以理

32、解的明文。雙向加密適合于隱秘通訊。單向加密剛好相反,只能對數(shù)據(jù)進(jìn)行加密,也就是說,沒有辦法對加密以后的數(shù)據(jù)進(jìn)行解密。MD5 就是采用單向加密的加密算法,對于 MD5 而言,有兩個(gè)特性是很重要的,第一是任意兩段明文數(shù)據(jù),加密以后的密文不能是相同的;第二是任意一段明文數(shù)據(jù),經(jīng)過加密以后,其結(jié)果必須永遠(yuǎn)是不變的。前者的意思是不可能有任意兩段明文加密以后得到相同的密文,后者的意思是如果我們加密特定的數(shù)據(jù),得到的密文一定是相同的。 3.3.3 Md5 加密原理對 MD5 算法簡要的敘述可以為:MD5 以 512 位分組來處理輸入的信息,且每一分組又被劃分為 16 個(gè) 32 位子分組,經(jīng)過了一系列的處理后

33、,算法的輸出由四個(gè) 32 位分組組成,將這四個(gè) 32 位分組級聯(lián)后將生成一個(gè) 128 位散列值。在 MD5 算法中,首先需要對信息進(jìn)行填充,使其字節(jié)長度對 512 求余的結(jié)果等于448。因此,信息的字節(jié)長度(Bits Length)將被擴(kuò)展至 N*512+448,即 N*64+56 個(gè)字節(jié)(Bytes) ,N 為一個(gè)正整數(shù)。填充的方法如下,在信息的后面填充一個(gè) 1 和無數(shù)個(gè) 0,直到滿足上面的條件時(shí)才停止用 0 對信息的填充。然后,在在這個(gè)結(jié)果后面附加一個(gè)以 64 位二進(jìn)制表示的填充前信息長度。經(jīng)過這兩步的處理,現(xiàn)在的信息字節(jié)長度=N*512+448+64=(N+1)*512,即長度恰好是 5

34、12 的整數(shù)倍。這樣做的原因是為滿足后面處理中對信息長度的要求。MD5 中有四個(gè) 32 位被稱作鏈接變量(Chaining Variable)的整數(shù)參數(shù),他們分別為:A=0 x01234567,B=0 x89abcdef,C=0 xfedcba98,D=0 x76543210。當(dāng)設(shè)置好這四個(gè)鏈接變量后,就開始進(jìn)入算法的四輪循環(huán)運(yùn)算。循環(huán)的次數(shù)是信息中 512 位信息分組的數(shù)目?!揪肺臋n】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.將上面四個(gè)鏈接變量復(fù)制到另外四個(gè)變量中:A 到 a,B 到 b,C 到 c,D 到 d。主循環(huán)有四輪(MD4 只有三輪) ,每輪循環(huán)都很相似。第一輪進(jìn)行 1

35、6 次操作。每次操作對 a、b、c 和 d 中的其中三個(gè)作一次非線性函數(shù)運(yùn)算,然后將所得結(jié)果加上第四個(gè)變量,文本的一個(gè)子分組和一個(gè)常數(shù)。再將所得結(jié)果向右環(huán)移一個(gè)不定的數(shù),并加上 a、b、c 或 d 中之一。最后用該結(jié)果取代 a、b、c 或 d 中之一。以一下是每次操作中用到的四個(gè)非線性函數(shù)(每輪一個(gè)) 。F(X,Y,Z) =(X&Y)|(X)&Z)G(X,Y,Z) =(X&Z)|(Y&(Z)H(X,Y,Z) =XYZI(X,Y,Z)=Y(X|(Z)(&是與,|是或,是非,是異或)這四個(gè)函數(shù)的說明:如果 X、Y 和 Z 的對應(yīng)位是獨(dú)立和均勻的,那么結(jié)果的每

36、一位也應(yīng)是獨(dú)立和均勻的。F 是一個(gè)逐位運(yùn)算的函數(shù)。即,如果 X,那么 Y,否則 Z。函數(shù) H 是逐位奇偶操作符。MD5 在實(shí)際中的一個(gè)應(yīng)用就是對數(shù)據(jù)庫中的用戶信息加密,當(dāng)用戶創(chuàng)建一個(gè)新的賬號或者密碼,他的信息不是直接保存到數(shù)據(jù)庫,而是經(jīng)過一次加密以后再保存,這樣,即使這些信息被泄露,也不能立即理解這些信息的真正含義。 3.3.4 具體算法在 java 語言中,實(shí)現(xiàn) MD5 加密是一件很簡單的事情,因?yàn)?java JDK 已經(jīng)為我們提供了相關(guān)的類。我們只需要調(diào)用就可以了。下面我來說一下具體的算法:/對字符串進(jìn)行MD5加密public class Jiami public static Strin

37、g MD5(String inStr) MessageDigest md5 = null;try md5 = MessageDigest.getInstance(MD5); catch (Exception e) System.out.println(e.toString();e.printStackTrace();return ;char charArray = inStr.toCharArray();byte byteArray = new bytecharArray.length;【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流.精品文檔.for (int i = 0; i char

38、Array.length; i+)byteArrayi = (byte) charArrayi;byte md5Bytes = md5.digest(byteArray);StringBuffer hexValue = new StringBuffer();for (int i = 0; i md5Bytes.length; i+) int val = (int) md5Bytesi) & 0 xff;if (val 16)hexValue.append(0);hexValue.append(Integer.toHexString(val);return hexValue.toStri

39、ng();為了再次增加安全性,可以對 MD5 進(jìn)行異或運(yùn)算。具體算法見附錄。運(yùn)行結(jié)果如下:4 總結(jié)本文主要對 MySQL 數(shù)據(jù)庫的安全配置、MySQL 用戶帳號管理以及使用 MD5 加密提高數(shù)據(jù)庫前臺和后臺數(shù)據(jù)安全性做了詳細(xì)研究。通過本次論文的編寫,讓我了解了 MySQL 數(shù)據(jù)庫的安全配置、用戶賬號管理、增刪用戶等知識以及如何使用 MD5 加密地?cái)?shù)據(jù)庫中的數(shù)據(jù)進(jìn)行加密。在今后的軟件開發(fā)中,我知道如何盡可能的提高數(shù)據(jù)庫的安全性,保證資料不被竊取。由于 MySQL 數(shù)據(jù)庫是個(gè)相當(dāng)復(fù)雜的管理數(shù)據(jù)的系統(tǒng),有很多問題我沒有實(shí)際操作,有很多實(shí)際操作結(jié)果與書籍中的不一致,還有很多問題書籍中沒有詳細(xì)講解等等,所以這次論文只做了簡單研究,有些地方講解的不清楚。這都是本次論文的不足之處。我希望通過以后的進(jìn)一步學(xué)習(xí),能夠更好的掌握 MySQL 數(shù)據(jù)庫的安全管理。參考文獻(xiàn):參考文獻(xiàn):1唐漢明,蘭麗華,關(guān)寶軍等MySQL 數(shù)據(jù)庫優(yōu)化與管理維護(hù) 北京:人民郵電出版社,2008 年,第 25-45 頁。2David Litchfield Chris Anley 著,閆雷鳴 刑蘇霄 翻譯 數(shù)據(jù)庫黑客大曝光 出版地:北京 清華大學(xué)出版社, 2006 年,第 222-266 頁3朱小平 網(wǎng)絡(luò)數(shù)據(jù)庫安全技術(shù)的研究與實(shí)現(xiàn) 同濟(jì)大學(xué)碩士論文 2006 年,第 5-34頁4高延玲 網(wǎng)絡(luò)數(shù)據(jù)庫安全研究與應(yīng)用 西安電子科技

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論