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

下載本文檔

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

文檔簡(jiǎn)介

1、目錄正文11 研究的背景12 研究的目的和意義13 研究的容23.1 MySQL數(shù)據(jù)庫的安全配置2系統(tǒng)部安全2外部網(wǎng)絡(luò)安全43.2 MySQL用戶管理83.3 MD5 加密11數(shù)據(jù)庫中數(shù)據(jù)加密的原因11加密式12加密原理12具體算法134 總結(jié)14參考文獻(xiàn):15附錄:15塔里木大學(xué)信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)大作業(yè)MySQL數(shù)據(jù)庫安全管理摘要: MySQL是完全網(wǎng)絡(luò)化的跨平臺(tái)關(guān)系型數(shù)據(jù)庫系統(tǒng),同時(shí)是具有客戶機(jī) / 服務(wù)器體系結(jié)構(gòu)的分布式數(shù)據(jù)庫管理系統(tǒng)。它具有功能強(qiáng)、使用簡(jiǎn)便、管理便、運(yùn)行速度快、安全可靠性強(qiáng)等優(yōu)點(diǎn), 用戶可利用多語言編寫訪問MySQL數(shù)據(jù)庫的程序, 特別是與 PHP更是黃金組

2、合,運(yùn)用十分廣泛。由于MySQL是多平臺(tái)的數(shù)據(jù)庫,它的默認(rèn)配置要考慮各種情況下都能適用,所以在用戶自己的使用環(huán)境下應(yīng)該進(jìn)行安全加固。用戶有責(zé)任維護(hù) MySQL數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)安全性和完整性。關(guān)鍵詞: MYSQL;數(shù)據(jù)庫;數(shù)據(jù)庫安全;訪問控制;MD5加密正文MySQL數(shù)據(jù)庫的安全配置必須從兩個(gè)面入手,系統(tǒng)部安全和外部網(wǎng)絡(luò)安全;MySQL用戶管理主要用grant( 授權(quán) ) 和 revoke( 撤權(quán) ) 兩個(gè) SQL指令來管理;MD5在實(shí)際中的一個(gè)應(yīng)用就是對(duì)數(shù)據(jù)庫中的用戶信息加密,當(dāng)用戶創(chuàng)建一個(gè)新的賬號(hào)或者密碼,他的信息不是直接保存到數(shù)據(jù)庫,而是經(jīng)過一次加密以后再保存,這樣,即使這些信息被泄露,也

3、不能立即理解這些信息的真正含義。有效的提高了前臺(tái)和后臺(tái)的數(shù)據(jù)安全性。1 研究的背景隨著計(jì)算機(jī)技術(shù)和信息技術(shù)的迅速發(fā)展。數(shù)據(jù)庫的應(yīng)用十分廣泛,深入到各個(gè)領(lǐng)域,但隨之而來產(chǎn)生了數(shù)據(jù)的安全問題。近年來,數(shù)據(jù)庫供應(yīng)商競(jìng)相為大眾提供功能豐富的數(shù)據(jù)庫環(huán)境,大多數(shù)主要系統(tǒng)都支持 XML、Web服務(wù)、分布式復(fù)制、操作系統(tǒng)集成以及其他一些有用的功能。與以前相比,數(shù)據(jù)庫更加容易遭受到攻擊,它已經(jīng)成為了更有價(jià)值的攻擊目標(biāo),所以需要配置更多的安全功能,管理也要更加的謹(jǐn)慎。2 研究的目的和意義本文對(duì) MySQL數(shù)據(jù)庫的安全配置、 MySQL用戶管理以及使用MD5加密提高數(shù)據(jù)庫前臺(tái)和后臺(tái)數(shù)據(jù)安全性做了詳細(xì)研究。由于 My

4、SQL是多平臺(tái)的數(shù)據(jù)庫,它的默認(rèn)配置要考慮各種情況下都能適用,所以用戶需要根據(jù)具體的環(huán)境進(jìn)行相關(guān)的安全配置,通過本文的研究,對(duì)如提高數(shù)據(jù)庫的安全性有很大的幫助。第1頁共17頁塔里木大學(xué)信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)大作業(yè)3研究的容3.1 MySQL數(shù)據(jù)庫的安全配置系統(tǒng)部安全MySQL安裝好,運(yùn)行了mysql_db_install腳本以后就會(huì)建立數(shù)據(jù)目錄和初始化數(shù)據(jù)庫。如果我們用MySQL源碼包安裝,而且安裝目錄是/usr/local/mysql,那么數(shù)據(jù)目錄一般會(huì)是 /usr/local/mysql/var。數(shù)據(jù)庫系統(tǒng)由一系列數(shù)據(jù)庫組成,每個(gè)數(shù)據(jù)庫包含一系列數(shù)據(jù)庫表。 MySQL是用數(shù)據(jù)庫名在

5、數(shù)據(jù)目錄建立建立一個(gè)數(shù)據(jù)庫目錄,各數(shù)據(jù)庫表分別以數(shù)據(jù)庫表名作為文件名,擴(kuò)展名分別為MYD、 MYI、 frm 的三個(gè)文件放到數(shù)據(jù)庫目錄中。MySQL的授權(quán)表給數(shù)據(jù)庫的訪問提供了靈活的權(quán)限控制,但是如果本地用戶擁有對(duì)庫文件的讀權(quán)限的話,攻擊者只需把數(shù)據(jù)庫目錄打包拷走,然后拷到自己本機(jī)的數(shù)據(jù)目錄下就能訪問竊取的數(shù)據(jù)庫。所以MySQL所在的主機(jī)的安全性是最首要的問題,如果主機(jī)不安全,被攻擊者控制,那么MySQL的安全性也無從談起。其次就是數(shù)據(jù)目錄和數(shù)據(jù)文件的安全性,也就是權(quán)限設(shè)置問題。從 MySQL主站一些老的 binary 發(fā)行版來看,版本中數(shù)據(jù)目錄的屬性是775,這樣非常危險(xiǎn),任本地用戶都可以讀

6、數(shù)據(jù)目錄,所以數(shù)據(jù)庫文件很不安全。版本中數(shù)據(jù)目錄的屬性是770,這種屬性也有些危險(xiǎn),本地的同組用戶既能讀也能寫,所以數(shù)據(jù)文件也不安全。版本數(shù)據(jù)目錄的屬性是700,這樣就比較好,只有啟動(dòng)數(shù)據(jù)庫的用戶可以讀寫數(shù)據(jù)庫文件,保證了本地?cái)?shù)據(jù)文件的安全。如果啟動(dòng) MySQL數(shù)據(jù)庫的用戶是mysql,那么像如下的目錄和文件的是安全的,請(qǐng)注意數(shù)據(jù)目錄及下面的屬性:shell>ls -l /usr/local/mysqltotal 40drwxrwxr-x 2 root root 4096 Feb 27 20:07 bindrwxrwxr-x 3 root root 4096 Feb 27 20:07 i

7、ncludedrwxrwxr-x 2 root root 4096 Feb 27 20:07 infodrwxrwxr-x 3 root root 4096 Feb 27 20:07 libdrwxrwxr-x 2 root root 4096 Feb 27 20:07 libexecdrwxrwxr-x 3 root root 4096 Feb 27 20:07 man第2頁共17頁塔里木大學(xué)信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)大作業(yè)shell>ls -l /usr/local/mysql/vartotal 8drwx- 2 mysql mysql 4096 Feb 27 20:08 mys

8、qldrwx- 2 mysql mysql 4096 Feb 27 20:08 testshell>ls -l /usr/local/mysql/var/mysqltotal 104-rw- 1 mysql mysql 0 Feb 27 20:08 columns_priv.MYD-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 m

9、ysql 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 1024 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-rw- 1 mysql mysql 1024 Feb 27 20:08 host.MYI-rw

10、- 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 1024 Feb 27 20:08 tables_priv.MYI如果這些文件的屬主及屬性不是這樣,請(qǐng)用以下兩個(gè)命令修正之:shell>chown -R mysql.mysql /usr/local/mysql/varshell>chmod -R go-rwx /usr/local/mysql/var用 root 用戶啟動(dòng)遠(yuǎn)程服務(wù)一直是安全大忌,因?yàn)槿绻?wù)程序出現(xiàn)

11、問題,遠(yuǎn)程攻擊者極有可能獲得主機(jī)的完全控制權(quán)。 MySQL從版本開始時(shí)作了小小的改動(dòng),默認(rèn)安裝后服務(wù)要用 mysql 用戶來啟動(dòng),不允 root 用戶啟動(dòng)。如果非要用 root 用戶來啟動(dòng),必須加上 -user=root 的參數(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還第3頁共17頁塔里木大學(xué)信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)大作業(yè)是做了

12、一些限制的,比如LOADDATAINFILE 只能讀全局可讀的文件,SELECT.INTOOUTFILE不能覆蓋已經(jīng)存在的文件。本地的日志文件也不能忽視,包括shell的日志和 MySQL自己的日志。有些用戶在本地登陸或備份數(shù)據(jù)庫的時(shí)候?yàn)榱藞D便,有時(shí)會(huì)在命令行參數(shù)里直接帶了數(shù)據(jù)庫的密碼,如:shell>/usr/local/mysql/bin/mysqldump -uroot -ptest test>test.sqlshell>/usr/local/mysql/bin/mysql -urootptest這 些 命 令 會(huì) 被shell記 錄在 歷 史 文 件 里 ,比 如ba

13、sh會(huì) 寫 入用 戶 目 錄的.bash_history 文件,如果這些文件不慎被讀, 那么數(shù)據(jù)庫的密碼就會(huì)泄漏。 用戶登陸數(shù)據(jù)庫后執(zhí)行的 SQL命令也會(huì)被 MySQL記錄在用戶目錄的 .mysql_history 文件里。如果數(shù)據(jù)庫用戶用 SQL語句修改了數(shù)據(jù)庫密碼,也會(huì)因 .mysql_history 文件而泄漏。所以我們?cè)?shell 登陸及備份的時(shí)候不要在 -p 后直接加密碼,而是在提示后再輸入數(shù)據(jù)庫密碼。另外這兩個(gè)文件我們也應(yīng)該不讓它記錄我們的操作,以防萬一。shell>rm .bash_history .mysql_historyshell>ln -s /dev/nul

14、l .bash_historyshell>ln -s /dev/null .mysql_history上門這兩條命令把這兩個(gè)文件到 /dev/null ,那么我們的操作就不會(huì)被記錄到這兩個(gè)文件里了。外部網(wǎng)絡(luò)安全MySQL數(shù)據(jù)庫安裝好以后, Unix 平臺(tái)的 user 表是這樣的:mysql> use mysql ;Database changedmysql> select Host,User,Password,Select_priv,Grant_priv from user;第4頁共17頁塔里木大學(xué)信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)大作業(yè)圖平臺(tái)的 user 表Windows平臺(tái)的

15、 user 表是這樣的:mysql> use mysql;Database changedmysql> select Host,User,Password,Select_priv,Grant_priv from user;圖平臺(tái)的 user 表實(shí)際上 Unix 平臺(tái)的 MySQL默認(rèn)只允本機(jī)才能連接數(shù)據(jù)庫。但是缺省root用戶口令是空,所以當(dāng)務(wù)之急是給root 用戶加上口令。給數(shù)據(jù)庫用戶加口令有三種法:在 shell 提示符下用 mysqladmin 命令來改 root 用戶口令 : shell>mysqladmin -uroot password test這樣, MySQL

16、數(shù)據(jù)庫 root 用戶的口令就被改成test了。用 set password 修改口令:mysql> set password for rootlocalhost=password('test');這時(shí) root 用戶的口令就被改成test了。直接修改 user 表的 root 用戶口令:mysql> use mysql;mysql> update user set password=password('test') where user='root' mysql> flush privileges;這樣, MySQL數(shù)據(jù)

17、庫 root 用戶的口令也被改成test了。其中最后一句命令flushprivileges的意思是強(qiáng)制刷新存授權(quán)表,否則用的還是緩沖中的口令,這時(shí)非法用戶第5頁共17頁塔里木大學(xué)信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)大作業(yè)還可以用 root 用戶及空口令登陸,直到重啟MySQL服務(wù)器。我們還看到 user 為空的匿名用戶,雖然它在Unix 平臺(tái)下沒什么權(quán)限,但為了安全起見我們應(yīng)該刪除它:mysql> delete from user where user=''Windows版本 MySQL的 user 表有很大不同,我們看到Host 字段除了 localhost還有是 %。這里

18、%的意思是允任意的主機(jī)連接MySQL服務(wù)器,這是非常不安全的,給攻擊者造成可乘之機(jī),我們必須刪除Host 字段為 %的記錄:mysql>delete from user where host='%'默認(rèn) root 用戶的空密碼也是必須修改,三種修改法和Unix 平臺(tái)一樣。對(duì) user 表操作以后不要忘了用flush privileges來強(qiáng)制刷新存授權(quán)表,這樣才能生效。MySQL的 5 個(gè)授權(quán)表: user, db, host, tables_priv和 columns_priv提供非常靈活的安全機(jī)制,從開始引入了兩條語句GRANT和 REVOKE來創(chuàng)建和刪除用戶權(quán)限,可

19、以便的限制哪個(gè)用戶可以連接服務(wù)器,從哪里連接以及連接后可以做什么操作。在版本以前的 MySQL授權(quán)機(jī)制不完善,和新版本也有較大的不同,建議升級(jí)到最新版本的 MySQL。我們先來了解授權(quán)表的結(jié)構(gòu)。MySQL授權(quán)表的結(jié)構(gòu)與容:mysql> desc user;user 表是 5 個(gè)授權(quán)表中最重要的一個(gè), 列出可以連接服務(wù)器的用戶及其加密口令,并且它指定他們有哪種全局 (超級(jí)用戶)權(quán)限。在 user 表啟用的任權(quán)限均是全局權(quán)限,并適用于所有數(shù)據(jù)庫。所以我們不能給任用戶訪問mysql.user表的權(quán)限!權(quán)限說明:第6頁共17頁塔里木大學(xué)信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)大作業(yè)圖權(quán)限說明mysql&g

20、t; desc db;圖數(shù)據(jù)庫db 表列出數(shù)據(jù)庫,而用戶有權(quán)限訪問它們。在這里指定的權(quán)限適用于一個(gè)數(shù)據(jù)庫中的所有表。mysql> desc host;第7頁共17頁塔里木大學(xué)信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)大作業(yè)圖表host 表與 db 表結(jié)合使用在一個(gè)較好層次上控制特定主機(jī)對(duì)數(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ù)庫級(jí)權(quán)限 )

21、 、tables_priv( 數(shù)據(jù)表級(jí)權(quán)限 ) 、columns_priv( 數(shù)據(jù)列級(jí)權(quán)限 ) 四個(gè)權(quán)限表來分配權(quán)限的。 host 權(quán)限表不受這兩個(gè)指令影響。下面將會(huì)詳細(xì)介紹用戶權(quán)限管理的容。GRANT語法說明:GRANT privileges (columns) #privileges表示授予的權(quán)限, columns 表示作用的列( 可選)ON what#設(shè)置權(quán)限級(jí)別,全局級(jí)、數(shù)據(jù)庫級(jí)、數(shù)據(jù)表級(jí)和數(shù)據(jù)列級(jí)TO account#權(quán)限授予的用戶,用"user_name""host_name" 這種用戶名、主機(jī)名格式IDENTIFIED BY 'pa

22、ssword'#設(shè)置用戶密碼REQUIRE encryption requirements#設(shè)置經(jīng)由 SSL連接WITH grant or resource management options;#設(shè)置的管理和資源 ( 連接服務(wù)器次數(shù)或查詢次數(shù)等 ) 選項(xiàng)示例:mysql>grant all on db.* to 'test''localhost' identified by 'test'第8頁共17頁塔里木大學(xué)信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)大作業(yè)上例運(yùn)行后的效果是, test用戶只能通過 test 密碼從本機(jī)訪問db 數(shù)據(jù)庫mys

23、ql>grant all on db.* to 'test''%' identified by 'test'上例運(yùn)行后的效果是, test用戶可通過 test 密碼從任意計(jì)算機(jī)上訪問db 數(shù)據(jù)庫。 %代表任意字符, _代表一個(gè)任意字符。主機(jī)名部份還可以是IP 地址。表訪問權(quán)限表權(quán)限權(quán)限說明CREATE TEMPORARY創(chuàng)建臨時(shí)數(shù)據(jù)表TABLESEXECUTE執(zhí)行存儲(chǔ)過程 ( 暫不支持 )FILE操作系統(tǒng)文件GRANT OPTION可把本的權(quán)限授予其它用戶LOCK TABLES鎖定指定數(shù)據(jù)表PROCESS查看運(yùn)行著的線程信息RELOAD重新

24、加載權(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)行超級(jí)用戶操作ALTER可修改表和索引的結(jié)構(gòu)CREATE創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表DELETE刪除數(shù)據(jù)表中的數(shù)據(jù)行DROP刪除數(shù)據(jù)表和數(shù)據(jù)行INDEX建立或刪除索引INSERT插入數(shù)據(jù)行REFERENCES( 暫時(shí)不支持 )SELECT查詢數(shù)據(jù)行第9頁共17頁塔里木大學(xué)信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)大作業(yè)權(quán)限權(quán)限說明UP

25、DATE更新數(shù)據(jù)行ALL所有權(quán)限,但不包括GRANT。USAGE無權(quán)限權(quán)限表 3.2.2 權(quán)限作用圍 ( 由 ON子句設(shè)置 )權(quán)限限定符作用圍ON *.*全局級(jí)權(quán)限,作用于所有數(shù)據(jù)庫ON *全局級(jí)權(quán)限,若未指定默認(rèn)數(shù)據(jù)庫,其作用圍是所有數(shù)據(jù)庫,否則,其作用圍是當(dāng)前數(shù)據(jù)庫ON db_name.*數(shù)據(jù)庫級(jí)權(quán)限,作用于指定數(shù)據(jù)庫里的所有數(shù)據(jù)表ON數(shù)據(jù)表級(jí)權(quán)限,作用于數(shù)據(jù)表里的所有數(shù)據(jù)列db_name.tbl_nameON tbl_name數(shù)據(jù)表級(jí)權(quán)限,作用于默認(rèn)數(shù)據(jù)庫中指定的數(shù)據(jù)表里的所有數(shù)據(jù)列USAGE權(quán)限的用法:修改與權(quán)限無關(guān)的項(xiàng),如:mysql>GRANT USAGE ON *.* TO

26、 account IDENTIFIED BY 'new_password' ; # 修改密碼mysql>GRANT USAGE ON *.* TO account REQUIRE SSL; # 啟用 SSL連接 mysql>GRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR; 10 #設(shè)置資源擁有 WITH GRANT OPTION權(quán)限的用戶可把自已所擁用的權(quán)限轉(zhuǎn)授給其他用戶,如:mysql>GRANT ALL ON db.* TO 'test''%' IDEN

27、TIFIED BY 'password' WITH GRANTOPTION;這樣 test用戶就有權(quán)把該權(quán)限授予其他用戶。限制資源使用,如:mysql>GRANT ALL ON db.*TO accountIDENTIFIEDBY 'password'WITH第10頁共17頁塔里木大學(xué)信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)大作業(yè)MAX_CONNECTIONS_PER_10HOURMAX_QUERIES_PER_HOUR200MAX_UPDATES_PER_HOUR50;允 account 用戶每小時(shí)最多連接 20 次服務(wù)器,每小時(shí)最多發(fā)出 200 條查詢命令 (

28、其中更新命令最多為 50 條)默認(rèn)都是零值,即沒有限制。FLUSHUSER_RESOURCES和FLUSHPRIVILEGES可對(duì)資源限制計(jì)數(shù)器清零。REVOKE語法說明:mysql>REVOKE privileges (columns) ON what FROM account;示例:mysql>REVOKE SELECT ON db.* FROM 'test''localhost';刪除 test從本機(jī)查詢 db 數(shù)據(jù)庫的權(quán)限REVOKE可刪除權(quán)限, 但不能刪除, 即使已沒有任權(quán)限。 所以 user 數(shù)據(jù)表里還會(huì)有該的記錄,要徹底刪除,需用 DE

29、LETE命令刪除 user 數(shù)據(jù)表的記錄,如:% mysql -u root -p mysql>use mysqlmysql>DELETE 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 加密數(shù)據(jù)庫中數(shù)據(jù)加密的原因現(xiàn)在網(wǎng)絡(luò)上

30、一般的,稍微完善一點(diǎn)的,往往都需要用戶先注冊(cè),提供諸如電子、賬號(hào)、密碼等信息以后,成為欄目的注冊(cè)用戶,才可以享受一些特殊欄目提供的信息或者服務(wù),比如免費(fèi)電子、論壇、聊天等,都需要用戶注冊(cè)。而對(duì)于電子商務(wù),比如igo5 等大型電子商務(wù),用戶需要購買商品,就一定需要詳細(xì)而準(zhǔn)確的注冊(cè),而這些信息,往往是用戶很隱秘的信息,比如、電子、地址等,所以,注冊(cè)信息對(duì)于用戶和都是很重要的資源,不能隨意透露,更加不能存在安全上的隱患。一般將用戶資料直接保存在數(shù)據(jù)庫中,并沒有進(jìn)行任的措施,對(duì)于一些文件型數(shù)第11頁共17頁塔里木大學(xué)信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)大作業(yè)據(jù)庫比如 Access 等,如果有人得到這個(gè)文件,

31、豈不是所有的資料都泄露無疑?更加重要的是,如果一個(gè)不負(fù)責(zé)任的網(wǎng)管,不需要任技術(shù)手段,就可以查看中的任資料,如果我們的用戶信息在數(shù)據(jù)庫中沒有加密,對(duì)于網(wǎng)管而言,查看這些信息是太簡(jiǎn)單了。所以,為了增加安全性,我們有必要對(duì)數(shù)據(jù)庫中的資料進(jìn)行加密,這樣,即使有人得到了整個(gè)數(shù)據(jù)庫,如果沒有解密算法,也一樣不能查看到數(shù)據(jù)庫中的用戶信息。加密式在現(xiàn)階段,我們一般認(rèn)為存在兩種加密式,單向加密和雙向加密。雙向加密是加密算法中最常用的,它將我們可以直接理解的明文數(shù)據(jù)加密為我們不可直接理解的密文數(shù)據(jù),然后,在需要的時(shí)候,可以使用一定的算法將這些加密以后的密文解密為原來可以理解的明文。雙向加密適合于隱秘通訊。單向加密

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

33、成一個(gè)128 位散列值。在 MD5算法中,首先需要對(duì)信息進(jìn)行填充,使其字節(jié)長度對(duì)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 對(duì)信息的填充。然后,在在這個(gè)結(jié)果后面附加一個(gè)以64 位二進(jìn)制表示的填充前信息長度。經(jīng)過這兩步的處理,現(xiàn)在的信息字節(jié)長度=N*512+448+64=(N+1)*512,即長度恰好是 512 的整數(shù)倍。這樣做的原因是為滿足后面處理中對(duì)信息長度的要求。第12頁共

34、17頁塔里木大學(xué)信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)大作業(yè)MD5中有四個(gè) 32 位被稱作變量( Chaining Variable)的整數(shù)參數(shù),他們分別為:A=0x01234567, B=0x89abcdef,C=0xfedcba98,D=0x76543210。當(dāng)設(shè)置好這四個(gè)變量后,就開始進(jìn)入算法的四輪循環(huán)運(yùn)算。循環(huán)的次數(shù)是信息中512 位信息分組的數(shù)目。將上面四個(gè)變量復(fù)制到另外四個(gè)變量中:A 到 a,B 到 b,C 到 c,D 到 d。主循環(huán)有四輪( MD4只有三輪),每輪循環(huán)都很相似。第一輪進(jìn)行16 次操作。每次操作對(duì) a、b、 c 和 d 中的其中三個(gè)作一次非線性函數(shù)運(yùn)算,然后將所得結(jié)果加上第

35、四個(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 的對(duì)應(yīng)位是獨(dú)立和均勻的,那么結(jié)果的每一位也應(yīng)是獨(dú)立和均勻的。 F 是一個(gè)逐位運(yùn)算的函數(shù)。即,如果X,那么 Y,否則 Z。函數(shù)

36、H是逐位奇偶操作符。MD5在實(shí)際中的一個(gè)應(yīng)用就是對(duì)數(shù)據(jù)庫中的用戶信息加密,當(dāng)用戶創(chuàng)建一個(gè)新的賬號(hào)或者密碼,他的信息不是直接保存到數(shù)據(jù)庫,而是經(jīng)過一次加密以后再保存,這樣,即使這些信息被泄露,也不能立即理解這些信息的真正含義。具體算法在 java 語言中,實(shí)現(xiàn) MD5加密是一件很簡(jiǎn)單的事情,因?yàn)?java JDK 已經(jīng)為我們提供了相關(guān)的類。我們只需要調(diào)用就可以了。下面我來說一下具體的算法:/ 對(duì)字符串進(jìn)行 MD5加密publicclassJiami publicstaticString MD5(String inStr) MessageDigest md5 =null;try第13頁共17頁塔里

37、木大學(xué)信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)大作業(yè)md5 = MessageDigest.getInstance("MD5");catch(Exception e) System. out.println(e.toString();e.printStackTrace();return""char charArray = inStr.toCharArray();byte byteArray =newbyte charArray.length;for(inti = 0; i < charArray.length; i+)byteArrayi = (byte)

38、charArrayi;byte md5Bytes = md5.digest(byteArray);StringBuffer hexValue =new StringBuffer();for(inti = 0; i < md5Bytes.length; i+) intval = (int) md5Bytesi) & 0xff;if(val < 16)hexValue.append("0");hexValue.append(Integer.toHexString(val);returnhexValue.toString();為了再次增加安全性,可以對(duì)MD5進(jìn)

39、行異或運(yùn)算。具體算法見附錄。運(yùn)行結(jié)果如下:4 總結(jié)本文主要對(duì) MySQL數(shù)據(jù)庫的安全配置、 MySQL用戶管理以及使用MD5加密提高數(shù)據(jù)庫前臺(tái)和后臺(tái)數(shù)據(jù)安全性做了詳細(xì)研究。通過本次論文的編寫,讓我了解了MySQL數(shù)據(jù)庫的安全配置、用戶賬號(hào)管理、增刪用戶等知識(shí)以及如使用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ì)講解等等,所以這次論文只做了簡(jiǎn)單研究,有些地講解的不清楚。這都是本次論文的不足之處

40、。我希望通過以后的進(jìn)一步學(xué)習(xí),能夠更好的掌握MySQL數(shù)據(jù)庫的安全管理。第14頁共17頁塔里木大學(xué)信息工程學(xué)院計(jì)算機(jī)網(wǎng)絡(luò)安全基礎(chǔ)大作業(yè)參考文獻(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)用電子科技大學(xué)碩士論文2003 年,第8-33 頁5美Ian Gilfillan著,軍 等譯 MySQL4 從入門到精通出版地:電子工業(yè) 2003 年版,第 129-168 頁6 海,黃健昌,祝

溫馨提示

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

評(píng)論

0/150

提交評(píng)論