通过SQL Server的DML触发器来监控哪些IP对表的数据进行了修改:2
在有些公司中,由于管理的不规范,或者是便于开发人员直接修改、部署程序,往往任何开发人员,都能登录到生产环境的数据库直接进行操作。
当然啦,一般的select语句可能不会导致什么太大的问题,但如果是delete和update,而由于某些开发人员忘记写where条件,或者条件写错了,导致一下子删除或更新了,导致数据出了问题,最关键的是当发现问题后,没有人承认这个是他干的,那该怎么办呢?
下面就是通过DML触发器,来监控哪些IP的机器,在什么时候进行了update操作:
--要跟踪的表if OBJECT_ID('wc') is not null drop table wcgocreate table wc(id int,vv varchar(10))insert into wcselect 1,'abc' union allselect 2,'abc' union allselect 3,'abc'go--存放审核信息的表if OBJECT_ID('audit_table') is not null drop table audit_tablegocreate table audit_table(id int identity(1,1) primary key,spid int,operation nvarchar(20),exec_sql nvarchar(max),connect_time DATETIME,net_transport NVARCHAR(40),protocol_type NVARCHAR(40),auth_scheme NVARCHAR(40),client_net_address VARCHAR(48),client_tcp_port int,local_net_address VARCHAR(48),local_tcp_port int,host_name NVARCHAR(128),program_name NVARCHAR(128),host_process_id int,client_interface_name NVARCHAR(32),exec_datetime datetime)go--触发器create trigger dbo.trigger_wcon wcafter updateasdeclare @t table(eventtype nvarchar(14),prama smallint,eventinfo nvarchar(max))insert into @t(eventtype,prama,eventinfo)exec('DBCC INPUTBUFFER('+@@spid+')')insert into audit_tableselect @@SPID, 'UPDATE', (select eventinfo from @t), (select connect_time from sys.dm_exec_connections where session_id = @@spid), (select net_transport from sys.dm_exec_connections where session_id = @@spid), (select protocol_type from sys.dm_exec_connections where session_id = @@spid), (select auth_scheme from sys.dm_exec_connections where session_id = @@spid), (select client_net_address from sys.dm_exec_connections where session_id = @@spid), (select client_tcp_port from sys.dm_exec_connections where session_id = @@spid), (select local_net_address from sys.dm_exec_connections where session_id = @@spid), (select local_tcp_port from sys.dm_exec_connections where session_id = @@spid), (select [host_name] from sys.dm_exec_sessions where session_id = @@spid), (select [program_name] from sys.dm_exec_sessions where session_id = @@spid), (select host_process_id from sys.dm_exec_sessions where session_id = @@spid), (select client_interface_name from sys.dm_exec_sessions where session_id = @@spid), GETDATE()go--更新数据update wcset vv = 'aaa'--查看记录select * from audit_table
下面是监控结果:
>更多相关文章
- 10-26Whitewidow SQL漏洞扫描工具演示
- 10-26SQL黑客注入防御与绕过的多种姿势
- 12-23SQLServer数据库操作总结(sql语法的使用)
- 12-21C#连接Sqlite
- 12-21ORACLE数据库学习之SQL性能优化详解
- 12-21解决SQLSERVER2008数据库日志文件占用硬盘空间问题
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 12-05亚马逊推出新一代基础模型 任意模态生成大模
- 12-05OpenAI拓展欧洲业务 将在苏黎世设立办公室
- 12-05微软质疑美国联邦贸易委员会泄露信息 督促其
- 12-05联交所取消宝宝树上市地位 宝宝树:不会对公
- 12-04企业微信致歉:文档打开异常已完成修复
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御