T-SQL問題解決集錦——資料加解密(2)
問題三、如何讓指定使用者可以對資料表進行Truncate操作?
Truncate在對大表全刪除操作時,會明顯比Delete語句更快更有效,但是因為它不需要存放日誌,並且一定是全表刪除,所以造成資料的不可恢復性。也說明了它的危險性。
但是,執行Truncate需要有表擁有者、系統管理員、db_owner、db_ddladmin這些裡面的其中一種高許可權角色才能執行。
對此,可以使用05之後的EXECUTE AS表示式來實現許可權內容的切換:
1. 切換登入:EXECUTE AS LOGIN
2. 切換使用者:EXECUTE AS USER
3. 切換執行許可權:EXECUTE AS owner/’user name’,利用高使用者許可權來執行作業。此步驟可以在低許可權實體下執行高許可權操作,也能避免安全性漏洞。
另外,只有EXECUTE AS Caller可以跨資料庫執行,而其他方式進行的許可權切換僅限制於本資料庫。
注意:執行EXECUTE AS USER模擬使用者切換時,需要先獲得被模擬使用者的授權。
可以使用REVERT來還原執行內容前的原始身份。
問題四、如何獲取前端連線的資訊,如IP地址和計算機名?
對於DBA工作或者某些特殊的應用程式,需要獲取前端應用的系統資訊。而這些資訊如果用使用者表來儲存,代價會比直接讀取資料庫系統資訊要大。所以建議適當讀取系統表:
在連線資料庫的session期間,都可以在master資料庫中找到session資訊,但是從05開始,有了很多DMV/DMF來實現這些功能:
l Master.dbo.sysprocesses或者master.sys.sysprocesses:提供執行階段的SPID、計算機名、應用程式名等。
l Sys.dm_exec_sessions:記錄每個session的基本資訊,包括id、計算機名、程式名、應用程式名等
l Sys.dm_exec_connections:記錄每個連線到SQLServer例項的前端資訊,包括網路位置、連線時間等等。
l select client_net_address 'Client IP Address',local_net_address'SQL ServerIP Address',*
l from sys.dm_exec_connections
l wheresession_id=@@spid
在2005以後,建議使用DMV取代系統表。
問題五、如何避免SQL隱碼攻擊的攻擊?
對於資料庫應用程式,無論是那種DBMS,SQL隱碼攻擊都是一大隱患。
要避免SQL隱碼攻擊,應該最起碼做到以下幾點:
1. 檢查輸入的資料,應用程式不要相信使用者輸入的資料,必須經過檢驗後才能輸入資料庫。要排除%、--等特殊符號。
2. 避免果度暴露錯誤資訊。建議可以轉換成Windows事件或者是轉換成應用程式內部錯誤資訊。
3. 使用引數化查詢或者儲存過程
注意:
動態SQL是造成SQL隱碼攻擊的主凶
相關文章
- 線上問題集錦(2)
- 構建Potatso問題集錦及解決方案
- kafka問題集錦Kafka
- 小問題集錦
- flutter問題集錦Flutter
- ArchLinux 問題集錦Linux
- Linux 問題處理集錦Linux
- 線上問題集錦(1)
- 面試集錦(六)資料結構(2)面試資料結構
- SpringBoot+ShardingSphere徹底解決生產環境資料庫欄位加解密問題Spring Boot資料庫解密
- scikit-learn 中 Boston Housing 資料集問題解決方案
- java 入門篇 問題集錦Java
- 面試必備問題集錦面試
- 解決AI的小資料問題AI
- Python資料型別面試題集錦!(附答案)Python資料型別面試題
- 資料競賽Tricks集錦
- AndroidStudio之app/build.gradle問題集錦AndroidAPPUIGradle
- 解決hive資料庫 插入資料很慢的問題Hive資料庫
- sbt配置——資料來源問題解決
- 資料庫層面問題解決思路資料庫
- Python學習資料之企業面試題集錦!Python面試題
- Vue.JS 開發常見問題集錦Vue.js
- C++和MATLAB混編的問題集錦C++Matlab
- PHP開發工程師面試問題集錦PHP工程師面試
- 解決叢集 Yellow 與 Red 的問題
- 資料編號+1 併發問題解決
- SqlServer資料庫中文亂碼問題解決SQLServer資料庫
- 【Spark篇】---Spark解決資料傾斜問題Spark
- 新手必看!使用New File Menu常見問題集錦
- 解決資料庫高併發訪問瓶頸問題資料庫
- 面試題集錦-SpringBoot面試題Spring Boot
- db2資料庫的操作以及一些常見問題解決DB2資料庫
- Swoole - TCP流資料邊界問題解決方案TCP
- Windows共享資料夾常見問題解決方法Windows
- 安裝mysql資料庫及問題解決方法MySql資料庫
- 資料倉儲的效能問題及解決之道
- 解碼智慧治理 用大資料解決民生小問題大資料
- 雲端計算大資料面試題,雲端計算大資料面試題集錦大資料面試題
- 解決pl/sql developer中資料庫插入資料亂碼問題SQLDeveloper資料庫