国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

個人經驗總結:如何限制sa登錄Sybase ASE

2024-07-21 02:44:21
字體:
來源:轉載
供稿:網友

需求:必須限制 sa 登錄sybase ASE


解決思路如下:

利用sybase ASE的特性提供的存儲過程 sp_modifylogin,對登錄的合法性進行驗證。


-- 先新創建一個權限足夠高的用戶,將來當服務器有問題時,好用來恢復sa


-- 接下來將sa的login script綁定

use master

go


drop PRocedure sp_bindlogin

go


-- 存儲過程名字弄個像系統的一樣

create procedure sp_bindlogin

as

begin

declare @hostname varchar(100)

declare @program_name varchar(100)

declare @ipaddr varchar(100)

declare @new datetime


select @hostname = hostname,

@program_name = program_name,

@ipaddr = ipaddr

from master..sysprocesses

where spid = @@spid


-- 登錄機器限定

if @hostname != '機器名'

begin

shutdown with nowait

end


-- 登錄機器IP限定

if @ipaddr != '機器IP'

begin

shutdown with nowait

end


-- 登錄應用程序限定

if @program_name in ('SQL_Advantage', 'isql')

begin

shutdown with nowait

end


select @new = getdate()


-- 登錄時間限定

if @new >= '20080808'

begin

shutdown with nowait

end

end

go


sp_hidetext sp_bindlogin

go


sp_modifylogin sa, 'login script', sp_bindlogin

go


經過以上處理,sa只能在本機,并且不能使用 isql 、sqladv ,在 20080808 之前 登錄數據庫。

這里的邏輯是可以自由編寫的。


這里的合法性驗證不通過的處理方法是 shutdown 。

可以把 shutdown 換成以下存儲過程。 這樣就殺掉了自己。不會影響服務,只是需要做一些額外的配置。


drop procedure sp_killme

go


create procedure sp_killme

as

begin

declare @cmd varchar(100)

select @cmd = 'kill ' + convert(varchar(20), @@spid)


exec sp_remotesql 'local', @cmd

end

go


sp_hidetext sp_killme

go


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 施甸县| 泗洪县| 佳木斯市| 两当县| 乾安县| 水富县| 福贡县| 小金县| 垣曲县| 苍溪县| 盐城市| 瓦房店市| 南川市| 灵武市| 抚宁县| 汤阴县| 望城县| 梓潼县| 北流市| 会同县| 丹江口市| 平江县| 辽阳市| 内丘县| 加查县| 武陟县| 城固县| 绩溪县| 甘肃省| 盐亭县| 凤庆县| 林周县| 文山县| 宁武县| 云安县| 高要市| 万安县| 景洪市| 成安县| 五原县| 灵川县|