將一些SQL權限的心得做個整理


將一些SQL權限的心得做個整理


SQL語法 不外乎查詢(SELECT), 新增(INSERT), 刪除(DELETE,DROP), 修改(UPDATE), 建立(CREATE), 執行(EXECUTE)

將網站分為前端及後端管理

前端大部份是 查詢 最多, 所以只需要 查詢 權限即可

後端管理 也需要 查詢, 新增, 刪除, 修改 權限
但是因為新增,刪除,修改權限會造成安全上的漏洞,
所以以上語法需要全部改成預存程序來執行

總合以上說明, 網頁的帳號權限只剩 查詢及執行 二種

權限是設定在角色身上, 而不是帳號,
這樣一來帳號就可以任意更換,
帳號建立後,只需要將帳號加入角色內即可。


權限設定下載網址
http://aqr198.googlepages.com/rule.rar

以上內容包含了三個檔案
rule_make.sql
remove_public.sql
無法取消權限的自定函數.txt


※rule_make.sql內容說明
建立 readonly , execonly 二個角色
透過sysobjects系統資料表, 取出所有的資料表、檢視表及預存程序名稱
1. 資料表、檢視表的查詢權限設給 readonly
2. 預存程序的執行權限設給 execonly
3. 取消系統資料表及系統預存程序的使用權限

※remove_public.sql 內容說明
因為 public 有部份的預設權限, 但是在ASP網站上是不需要的
所以將 public 的權限全部移除

※無法取消權限的自定函數.txt
在移除 master 內 public 角色權限時, 發現有部份自定函數無法移除使用權限, 所以記錄下來


設定步驟說明(在 SQL Query Analyzer 執行)
1. 建立帳號,並指定資料庫名稱
sp_addlogin @loginame = '<<帳號名稱>>',
@passwd = '<<密碼>>',
@defdb = '<<指定資料庫名稱>>',
@deflanguage = NULL, --使用語系, null 表示預設值
@sid = NULL,
@encryptopt = NULL

2. 執行 rule_make.sql , 建立 readonly , execonly 二個角色

3. 將帳號加入 readonly , execonly 二個角色內
exec sp_addrolemember N'readonly', N'<<帳號名稱>>'
exec sp_addrolemember N'execonly', N'<<帳號名稱>>'

4. 設定完成

結論:SQL權限設定只是安全工作的一小部份, 仍有其他部份需要注意。

系統架構部份:
1. 資料庫跟網站架設在不同機器。
2. 網站前端展示及後端管理架設在不同機器。

程式撰寫部份:
字串過濾是必要的
OutStr = replace(OutStr,"/*","")
OutStr = replace(OutStr,"*/","")
OutStr = replace(OutStr,"declare","")
OutStr = replace(OutStr,"backup database","")
OutStr = replace(OutStr,"IS_SRVROLEMEMBER","")
OutStr = replace(OutStr,"Drop table","")
OutStr = replace(OutStr,"insert into","")
OutStr = replace(OutStr,"create table","")
OutStr = replace(OutStr,"set @","")

以上~

arrow
arrow
    全站熱搜

    aqr199xx 發表在 痞客邦 留言(0) 人氣()