中安威士資料庫審計之繫結變數審計

2021-09-23 20:43:51 字數 1546 閱讀 7832

近年來,隨著相關法律法規的完善、國家等級化保護要求,以及行業風險管理和內控指標的出台,安全審計產品慢慢的為大家所熟悉。而近年來資料盜竊和資料洩露等高危事件頻發,資料安全也越來越受各大企業和單位的重視。資料庫審計就是一款保護使用者資料安全的產品。

上一期的資料庫審計功能我們詳述了雙向審計,今天我們來聊一下繫結變數審計。

那麼什麼是繫結變數呢?

首先我們來看一下sql語句的解析流程,如下圖所示:

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-zdvrkqxw-1603781688204)(

伺服器程序接收到一條sql語句,首先檢查共享池中是否有之前解析過的相同的sql語句,如果有,就從共享池的快取庫中找到之前解析生成的執行計畫直接執行,sql語句不需要再次解析,從而直接跳到執行階段,這種解析稱作軟解析。

如果在共享池的庫快取中找不到對應的執行計畫,則必須經過解析sql的環節,生成執行計畫,這種解析稱作硬解析。

將解析過程進一步簡化可以得到下圖:

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-vfhefghc-1603781688207)(

硬解析 涉及到大量的資料運算,會消耗大量的cpu資源,例如下兩條語句單獨執行需要完整的硬解析兩遍:

select * from userinfo where userid =』n0001』;

select * from userinfo where userid =』n0002』;

但如果運用繫結變數執行:

select * from userinfo where id= :1;

使:1分別等於100和200,則資料庫解析時用佔位符,然後再傳值執行,這樣就只需要執行一次硬解析,兩sql復用同乙個執行計畫,節省了硬解析的資源開銷。

假設某條語句被重複執行了非常多次,那麼使用繫結變數帶來的好處是巨大的,能極大的節省資源,提高速度,因此是一種重要的效能優化手段被廣泛應用於對效能有要求的系統中。

對資料庫審計的影響

因為繫結變數的採用,傳統的審計只能審計到含有變數字元的sql,不包含具體值,這樣會造成資訊的丟失。

例如執行語句:

select * from userinfo where userid=:1; 1:=』n0006』;

傳統方式的審計日誌只會記錄如下語句:

select * from userinfo where name=:1;

這樣會造成如下後果:

(一)對審計日誌中查詢條件中的的具體值做檢索時會導致檢索結果不準確;

(二)不能審計到正確的sql語句。

完整還原

不漏審是檢驗資料庫審計系統的基本標準,如果要得到全面準確的審計,對繫結變數審計的功能必不可少,我們沒有忽視這一小小細節,我們的審計功能很早就可以完美審計到繫結變數的具體值,並還原成完整的語句,不遺漏任何一條sql。

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-egkvnhzy-1603781688209)(

資料庫是各種軟體應用系統的基礎設施,系統對於資料庫的訪問sql千變萬化,要想實現全面準確的審計,就要不斷的跟進分析和研發,讓審計的觸角覆蓋到資料庫訪問的每乙個角落。

Gridview用法之資料庫繫結

protected void button1 click object sender,eventargs e if textbox1.text textbox2.text if textbox1.text textbox2.text if textbox1.text textbox2.text 重構...

資料庫開發之繫結變數

對於每個程式開發人員來說,資料庫的知識都是或多或少的了解些,都能編寫一些sql語句,即使不會也可以使用一些工具來生成sql語句,因此資料庫在很多時候被認為是沒有必要研究的。隨著系統使用人數增加,系統也遇到了瓶頸,於是開發人員高呼 給我記憶體與cpu,系統將會faster 可是作為盈利性企業,投入與回...

TreeView控制項資料繫結之 資料庫資料遞迴繫結

樹遞迴繫結節點的思路 1 先獲得第一層的所有資料集合,然後迴圈遍歷集合,每遍歷一條資料就建立乙個treenode節點。給該節點的屬性text和value賦值。text屬性是顯示的文字內容,value屬性的值是不顯示的,主要是用來用存放有關節點的其他資料資訊,例如每乙個節點的唯一標示id。然後將節點繫...