亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

MySQL數據庫在網絡安全方面的一些防御措施

添加時間:2014-2-20 17:13:23  添加: 思海網絡 
基于網絡的應用也越來越多。網絡數據庫就是其中之一。通過一臺或幾臺服務器可以為很多客戶提供服務,這種方式給人們帶來了很多方便,但也給不法分子造成了可乘之機。由于數據都是通過網絡傳輸的,這就可以在傳輸的過程中被截獲,或者通過非常手段進入數據庫。由于以上原因,數據庫安全就顯得十分重要。因此,本文就以上問題討論了MySQL數據庫在網絡安全方面的一些措施。

  帳戶安全:

  帳戶是MySQL最簡單的安全措施。每一帳戶都由用戶名、密碼以及位置(一般由服務器名、IP或通配符)組成。如用戶john從server1進行登錄可能和john從server2登錄的權限不同。

  MySQL的用戶結構是用戶名/密碼/位置。這其中并不包括數據庫名。下面的兩條命令為database1和database2設置了select用戶權限。

  GRANT select ON database1.* to ’abc’@’server1’ IDENTIFIED BY ’password1’;

  GRANT select ON database2.* to ’abc’@’server1’ IDENTIFIED BY ’password2’;

  第一條命令設置了用戶abc在連接數據庫database1時使用password1。第二條命令設置了用戶abc在連接數據庫database2時使用password2。因此,用戶abc在連接數據庫database1和database2的密碼是不一樣的。

  上面的設置是非常有用的。如果你只想讓用戶對一個數據庫進行有限的訪問,而對其它數據庫不能訪問,這樣可以對同一個用戶設置不同的密碼。如果不這樣做,當用戶發現這個用戶名可以訪問其它數據庫時,那將會造成麻煩。

  MySQL使用了很多授權表來跟蹤用戶和這些用戶的不同權限。這些表就是在mysql數據庫中的MyISAM表。將這些安全信息保存在MySQL中是非常有意義的。因此,我們可以使用標準的SQL來設置不同的權限。
關鍵字: MySQL內核 數據庫安全配置 用戶認證模塊 密碼恢復 存儲過程編寫 數據庫索引
內容摘要:本文就以上問題討論了MySQL數據庫在網絡安全方面的一些措施。

  一般在MySQL數據庫中可以使用3種不同類型的安全檢查:

  ·登錄驗證

  也就是最常用的用戶名和密碼驗證。一但你輸入了正確的用戶名和密碼,這個驗證就可通過。

  ·授權

  在登錄成功后,就要求對這個用戶設置它的具體權限。如是否可以刪除數據庫中的表等。

  ·訪問控制

  這個安全類型更具體。它涉及到這個用戶可以對數據表進行什么樣的操作,如是否可以編輯數據庫,是否可以查詢數據等等。

  訪問控制由一些特權組成,這些特權涉及到所何使用和操作MySQL中的數據。它們都是布爾型,即要么允許,要么不允許。下面是這些特權的列表:

  ·select

  select是設定用戶是否可以使用select來查詢數據。如果用戶沒有這個特權,那么就只能執行一些簡單的select命令,如計算表達式(select 1 2),或是日期轉換(select Unix_TIMESTAMP(NOW( )))等。

  ·insert

  ·update

  ·INDEX

  INDEX決定用戶是否可以對表的索引進行設置。如果用戶沒有這個權限,那么將無法設置表中的索引。

  ·alter

  ·create

  ·GRANT

  如果一個用戶擁有這個GRANT權限,那么他就可以將自己的權限授給別的用戶。也就是說,這個用戶可以和其它用戶共享自己的權限。

  ·REFERENCES

  有了REFERENCES權限,用戶就可以將其它表的一個字段作為某一個表的外鍵約束。

  除了以上的權限外,MySQL還有一些權限可以對整個MySQL進行操作。

  ·Reload

  這個權限可以使用戶有權執行各種FLUSH命令,如FLUSH TABLES, FLUSH STATUS等。

  ·Shutdown
關鍵字: MySQL內核 數據庫安全配置 用戶認證模塊 密碼恢復 存儲過程編寫 數據庫索引
內容摘要:本文就以上問題討論了MySQL數據庫在網絡安全方面的一些措施。

  這個權限允許用戶關閉MySQL

  ·Process

  通過這個權限,用戶可以執行SHOW PROCESSLIST和KILL命令。這些命令可以查看MySQL的處理進程,可以通過這種方式查看SQL執行的細節。

  ·File

  這個權限決定用戶是否可以執行LOAD DATA INFILE命令。給用戶這個權限要慎重,因為有這個權限的用戶可以將任意的文件裝載到表中,這樣對MySQL是十分危險的。

  ·Super

  這個權限允許用戶終止任何查詢(這些查詢可能并不是這個用戶執行的)。

  以上幾種權限是非常危險的,在給用戶授權限時要非常謹慎。

  MySQL中的SSL

  以上的帳戶安全只是以普通的Socket進行數據傳輸的,這樣非常不安全。因此,MySQL在4.1版以后提供了對SSL(Secure Scokets Layer)的支持。MySQL使用的是免費的OpenSSL庫。

  由于MySQL的Linux版本一般都是隨Linux本身一起發布,因此,它們默認時都不使用SSL進行傳輸數據。如果要打開SSL功能,需要對hava_openssl變量進行設置:

  MySQL的Windows版本已經將OpenSSL加入了。也面的命令是查看你的MySQL是否打開了SSL功能。

  SHOW VARIABLES like ’have_openssl’;

  --------------- -------

  | Variable_name | Value |

  --------------- -------

  | have_openssl | NO |

  --------------- -------

  1 row in set (0.00 sec)

  如果返回的是NO,那么說明你需要將OpenSSL編譯進自己的MySQL在有時你可能需要將用戶名和密碼進行加密傳輸。在這時可以使用下面GRANT命令:

  GRANT ALL PRIVILEGES ON ssl_only_db.

  * to ’abc’@’%’ IDENTIFIED BY "password!" REQUIRE SSL;
關鍵字: MySQL內核 數據庫安全配置 用戶認證模塊 密碼恢復 存儲過程編寫 數據庫索引


  還可以通過 REQUIRE x509 選項進行SSL傳輸:

  GRANT ALL PRIVILEGES ON ssl_only_db.

  * to ’abc’@’%’ IDENTIFIED BY "password!" REQUIRE x509;

  你還可以使用REQUIRE SUBJECT來指定一個特定的客戶端證書來訪問數據庫。

  GRANT ALL PRIVILEGES ON ssl_only_db.* to ’abc’@’%’

  IDENTIFIED BY "password!"

  REQUIRE SUBJECT "/C=US/ST=New York/L=Albany/O=Widgets Inc./CN=client-ray.

  example.com/emailAddress=raymond@example.com";

  也許你并不關心使用的是什么客戶許可,而僅僅關心的是你的證書。那么你可以使用REQUIRE ISSUER來實現:

  GRANT ALL PRIVILEGES ON ssl_only_db.

  * to ’abc’@’%’ IDENTIFIED BY "password!"

  REQUIRE ISSUER

  "/C=US/ST=New 20York/L=Albany/O=Widgets Inc./CN=cacert.example.

  com/emailAddress=admin@example.com";

  SSL還可以直接通過密碼進行加密。可以使用REQUIRE CIPHER設置密碼。

  GRANT ALL PRIVILEGES ON ssl_only_db.

  * to ’abc’@’%’ IDENTIFIED BY "password!"

  REQUIRE CIPHER "EDH-RSA-DES-CBC3-SHA";

  上面使用了GRANT命令對用戶權限進行設置。而這些信息都是保存在授權表中,這些表是安全系統的心臟。在這些表中保存了每一個用戶和客戶機所具有的權限。如果正確地操作這些表,將會對數據庫的安全起到積極的作用,而如果使用不慎,將是非常危險的。
關鍵字: MySQL內核 數據庫安全配置 用戶認證模塊 密碼恢復 存儲過程編寫 數據庫索引
內容摘要:本文就以上問題討論了MySQL數據庫在網絡安全方面的一些措施。

  下面讓我們來看看MySQL中的最要的5個授權表。

  user

  用戶表保存了用戶的權限和被加密的密碼。這個表負責確定哪些用戶和客戶機可以連接到服務器上。

  host

  這個表為每一個客戶機分配權限,它并不考慮用戶的權限。MySQL在確定是否接收還是拒絕一個連接時,首先考慮的是user表。而使用GRANT或REVOKE命令并不影響host表,我們可以通過手工方式修改這個表中的內容。

  db

  db表保存了數據庫層的權限信息。

  tables_priv

  這個表存儲了表的權限信息。

  columns_priv

  這個表保存了單獨列的權限信息。通過這個表,可以將操作某一列的權限授予一個用戶。

  哈希加密

  如果數據庫保存了敏感的數據,如銀行卡密碼,客戶信息等,你可能想將這些數據以加密的形式保存在數據庫中。這樣即使有人進入了你的數據庫,并看到了這些數據,也很難獲得其中的真實信息。

  在應用程序的大量信息中,也許你只想交很小的一部分進行加密,如用戶的密碼等。這些密碼不應該以明文的形式保存,它們應該以加密的形式保存在數據庫中。一般情況下,大多數系統,這其中包括MySQL本身都是使用哈希算法對敏感數據進行加密的。

  哈希加密是單向加密,也就是說,被加密的字符串是無法得到原字符串的。這種方法使用很有限,一般只使用在密碼驗證或其它需要驗證的地方。在比較時并不是將加密字符串進行解密,而是將輸入的字符串也使用同樣的方法進行加密,再和數據庫中的加密字符串進行比較。這樣即使知道了算法并得到了加密字符串,也無法還原最初的字符串。銀行卡密碼就是采用的這種方式進行加密。

  MySQL提供了4個函數用于哈希加密:PASSWORD, ENCRYPT, SHA1和MD5。下面讓我們試一試這4個函數,看看會得到什么結果。我們以加密字符串"pa55word"為例進行說明:
關鍵字: MySQL內核 數據庫安全配置 用戶認證模塊 密碼恢復 存儲過程編寫 數據庫索引
內容摘要:本文就以上問題討論了MySQL數據庫在網絡安全方面的一些措施。

  讓我們先來看看MD5函數:

  select MD5(’pa55word’);

  ----------------------------------

  | MD5(’pa55word’) |

  ----------------------------------

  | a17a41337551d6542fd005e18b43afd4 |

  ----------------------------------

  1 row in set (0.13 sec)

  下面是PASSWORD函數:

  select PASSWORD(’pa55word’);

  ----------------------

  | PASSWORD(’pa55word’) |

  ----------------------

  | 1d35c6556b8cab45 |

  ----------------------

  1 row in set (0.00 sec)

  下面是ENCRYPT函數:

  select ENCRYPT(’pa55word’);

  ---------------------

  | ENCRYPT(’pa55word’) |

  ---------------------

  | up2Ecb0Hdj25A |

  ---------------------

  1 row in set (0.17 sec)

  上面的每個函數都返回了一個加密后的字符串。為了區分加密字符串的大小寫,最好在使用ENCRYPT生成加密字符串時,將這個字段定義成char BINARY類型。

  上面列舉了3種加密的方法,但我認為使用MD5加密是最好的。這是因為這樣做可以將明文密碼顯示在處理列表中或是查詢日志中,這樣便于跟蹤。如下面的insert語句使用插入了一條記錄,其中的密碼使用了MD5進行加密:

  insert INTO table1 (user, pw) VALUE (’user1’, MD5(’password1’) )

  可以通過如下的語句進行密碼驗證:

  select * FROM table1 where user = ’user1’ AND pw = MD5(’password1’)

  哈希加密方法可以很好地對密碼進行加密,使用了這種方法加密,密碼將無法恢復成明文。

關鍵字:MySQL、數據庫、數據庫

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站