国产探花免费观看_亚洲丰满少妇自慰呻吟_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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴国县| 正宁县| 汕头市| 泽普县| 保定市| 泾川县| 万载县| 平昌县| 镇平县| 渝中区| 香港 | 邓州市| 怀远县| 称多县| 科尔| 靖边县| 长治市| 汉中市| 海口市| 张家界市| 资溪县| 巍山| 许昌县| 资阳市| 互助| 乃东县| 兰州市| 靖州| 清河县| 白山市| 彰武县| 武川县| 玛多县| 同德县| 云霄县| 通道| 千阳县| 姜堰市| 华阴市| 盐津县| 望城县|