SQL Server的三大安全機制如下:
服務器級別的安全機制:服務器級別所包含的安全性對象主要有用戶登錄名、固定服務器角色等。其中,登錄名用于登錄數據庫服務器,而固定服務器角色用于給登錄名賦予相應的服務器訪問權限。該級別的安全性主要通過登錄名進行控制,要想訪問一個數據庫服務器,必須擁有一個合法的登錄名。登錄名可以是Windows賬戶,也可以是SQL Server的賬戶。
數據庫級別的安全機制:數據庫級別所包含的安全對象主要有用戶、角色、應用程序角色、證書、對稱秘鑰、非對稱密鑰、程序集、全文目錄、DDL事件和架構等。該級別的安全性主要通過用戶賬號進行控制,要想訪問一個數據庫,必須擁有該數據庫授權的合法用戶身份賬號。用戶賬號可以是通過操作系統登錄賬號進行映射的,也可以是屬于固定的數據庫角色或自定義數據庫角色的。
數據對象級別的安全機制:也稱為架構級別安全機制。架構級別所包含的安全對象主要有表、視圖、函數、存儲過程、類型、同義詞和聚合函數等。架構的作用是將數據庫中的所有對象分成不同的集合,每一個集合就稱為一個架構,每個集合之間都沒有交集。該級別的安全性通過設置數據對象的訪問權限進行控制。
通過Web應用防御SQL注入的手段有以下這些:
添加數據記錄:如果Web應用程序需要從表單中獲取相關數據,然后往后臺數據庫的相關數據表中插入一條新的記錄,程序員可以不直接使用INSERT語句,而通過先打開記錄集對象,然后往記錄集對象中先添加一條空記錄,再將具體的數據內容寫入到記錄字段中,最后直接將記錄集更新到數據庫中。這樣就可以有效避免SQL攻擊,達到防御的目的。
修改數據:如果Web應用程序需要從表單中獲取相關數據,然后修改后臺數據庫的相關數據表中的數據記錄,程序員也可以不直接使用UPDATE語句,而通過先構造一條查詢語句,打開記錄集對象,然后找到要修改的數據記錄,再將具體的數據內容寫入到記錄字段中,最后將修改后的記錄集更新到數據庫中,這樣就可以有效避免SQL攻擊,達到防御的目的。
刪除數據:如果Web應用程序需要刪除數據記錄,程序員也可以不直接使用DELETE語句,而通過先構造一條查詢語句,打開記錄集對象,然后找到要刪除的數據記錄,將此記錄刪除,再將刪除記錄后的記錄集更新到數據庫中。刪除操作是使用rs.delete語句完成的。這樣就可以有效避免SQL攻擊,達到防御的目的。
利用視圖修改和刪除:操作視圖與操作表有許多功能是相同的,例如查詢數據。如果一個視圖是多表關聯生成的,它比直接運行多表關聯速度要快,因為視圖是提前編譯好的,SQL語句的執行首先需要編譯。與表格不同,視圖的插入、修改和刪除是有限制的,這種限制可以在一定程度上保護數據被插入、修改或刪除。
利用存儲過程進行數據的修改和刪除:利用服務器端腳本修改數據的時候,可以利用記錄集對象的一些屬性,例如記錄數(rs.recordcount)來判斷影響的行數,如果不為0可以進行修改或刪除。另外也可以利用SQL語句通過存儲過程對修改或刪除操作進行重新封裝,并利用SQL語句對參數或影響的行數進行判斷,在存儲過程中也可以同時對參數進行過濾等處理。
回答所涉及的環境:聯想天逸510S、Windows 10。
SQL Server的三大安全機制如下:
服務器級別的安全機制:服務器級別所包含的安全性對象主要有用戶登錄名、固定服務器角色等。其中,登錄名用于登錄數據庫服務器,而固定服務器角色用于給登錄名賦予相應的服務器訪問權限。該級別的安全性主要通過登錄名進行控制,要想訪問一個數據庫服務器,必須擁有一個合法的登錄名。登錄名可以是Windows賬戶,也可以是SQL Server的賬戶。
數據庫級別的安全機制:數據庫級別所包含的安全對象主要有用戶、角色、應用程序角色、證書、對稱秘鑰、非對稱密鑰、程序集、全文目錄、DDL事件和架構等。該級別的安全性主要通過用戶賬號進行控制,要想訪問一個數據庫,必須擁有該數據庫授權的合法用戶身份賬號。用戶賬號可以是通過操作系統登錄賬號進行映射的,也可以是屬于固定的數據庫角色或自定義數據庫角色的。
數據對象級別的安全機制:也稱為架構級別安全機制。架構級別所包含的安全對象主要有表、視圖、函數、存儲過程、類型、同義詞和聚合函數等。架構的作用是將數據庫中的所有對象分成不同的集合,每一個集合就稱為一個架構,每個集合之間都沒有交集。該級別的安全性通過設置數據對象的訪問權限進行控制。
通過Web應用防御SQL注入的手段有以下這些:
添加數據記錄:如果Web應用程序需要從表單中獲取相關數據,然后往后臺數據庫的相關數據表中插入一條新的記錄,程序員可以不直接使用INSERT語句,而通過先打開記錄集對象,然后往記錄集對象中先添加一條空記錄,再將具體的數據內容寫入到記錄字段中,最后直接將記錄集更新到數據庫中。這樣就可以有效避免SQL攻擊,達到防御的目的。
修改數據:如果Web應用程序需要從表單中獲取相關數據,然后修改后臺數據庫的相關數據表中的數據記錄,程序員也可以不直接使用UPDATE語句,而通過先構造一條查詢語句,打開記錄集對象,然后找到要修改的數據記錄,再將具體的數據內容寫入到記錄字段中,最后將修改后的記錄集更新到數據庫中,這樣就可以有效避免SQL攻擊,達到防御的目的。
刪除數據:如果Web應用程序需要刪除數據記錄,程序員也可以不直接使用DELETE語句,而通過先構造一條查詢語句,打開記錄集對象,然后找到要刪除的數據記錄,將此記錄刪除,再將刪除記錄后的記錄集更新到數據庫中。刪除操作是使用rs.delete語句完成的。這樣就可以有效避免SQL攻擊,達到防御的目的。
利用視圖修改和刪除:操作視圖與操作表有許多功能是相同的,例如查詢數據。如果一個視圖是多表關聯生成的,它比直接運行多表關聯速度要快,因為視圖是提前編譯好的,SQL語句的執行首先需要編譯。與表格不同,視圖的插入、修改和刪除是有限制的,這種限制可以在一定程度上保護數據被插入、修改或刪除。
利用存儲過程進行數據的修改和刪除:利用服務器端腳本修改數據的時候,可以利用記錄集對象的一些屬性,例如記錄數(rs.recordcount)來判斷影響的行數,如果不為0可以進行修改或刪除。另外也可以利用SQL語句通過存儲過程對修改或刪除操作進行重新封裝,并利用SQL語句對參數或影響的行數進行判斷,在存儲過程中也可以同時對參數進行過濾等處理。
回答所涉及的環境:聯想天逸510S、Windows 10。