程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> C語言與Lua混合編程實現簡單MySQL監控系統

C語言與Lua混合編程實現簡單MySQL監控系統

編輯:關於MYSQL數據庫
本文簡要描述如何使用C和Lua混合編程,實現一個具有較高擴展性的系統,這裡我做了一個簡單的MySQL語句監控程序。做這個東西的源頭很簡單,在今年6月份我就寫過一篇介紹MySQL Proxy的文章,《MySQL Proxy(解決注入的另一思路)》http://www.hxhack.com/bbs/read.PHP?tid-176733-keyWord-MySQL%20Proxy.Html,它是一個串聯在應用中的系統,可以實現負載均衡,讀寫分離,數據庫操作審計等功能,當然我那時候提到它是因為它還能作為防注入的最後一道防線,詳細的介紹直接去看那個文章吧。最近我在轉換博客系統的時候需要監視MySQL的語句操作,就使用了MySQL Proxy記錄MySQL的行為。不過MySQL Proxy雖然功能眾多,但是需要串聯在應用中才能發揮它的能力,而串聯在企業應用中來說是個風險比較大的區域。因此我就萌生了想法,不如做一個精簡版的系統——並聯在網絡中,僅僅實現監控能力,作為一個目的單一的能准確監控SQL注入的IDS或者數據庫操作審計系統來使用。唯一的要求是高擴展性,因此,我使用了C語言與Lua混合編程。C語言實現程序主體,並給Lua環境注冊一些變量,甚至可以提供庫給Lua使用,而用Lua來實現條件的過濾。這樣寫簡單的Lua腳本就可以靈活的控制需要過濾的內容,而且無需編譯主程序,況且學習修改腳本的成本要比折騰C容易得多。嚴格說來,這裡的腳本編程只不過是一種更為強大的系統配置方式。程序不復雜,主要分為三部分,不過因為是周五一晚上寫完的,所以比較凌亂。第一部分是用鏈表實現了一個簡單的隊列,用來存儲sniffer到的數據的。第二部分是捕獲並分析數據包的,從隊列中分離出MySQL的數據包。第三部分就是和Lua的交互,設置一些變量傳遞給Lua腳本調用。這裡實現了2個部分,MySQL的command代碼和執行的sql語句。代碼附在附件中,其中還有我寫的一個測試Lua腳本,使用了我在C中給Lua定義的所有變量。另外,MySQL之於企業安全是很值得一提的——MySQL的協議非常的簡潔明了,而且它的整個數據傳輸除了登陸部分之外都是明文的,包括客戶端發送的命令,服務端的返回,包括你直接修改賬號密碼時候的密碼。這個對於安全來說,非常的需要警惕,因為隨著在線應用的發展,MySQL會逐漸從Oracle等重型數據庫中蠶食市場地位,這依賴於它可以廉價的分布式大量部署。對於企業安全來說,MySQL的協議明了既有好的方面,也有壞的方面。好的是可以自己開發做一些數據庫操作審計操作,不管DBA是使用圖形界面還是使用命令行界面,這個對於Oracle來說有時候是很困難的事情。壞處是在外網傳輸的時候需要尤其小心,公網遠程存儲MySQL數據一定要使用SSL加密。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved