批量删除注入字段,触发器防止注入。
2009-03-21 09:27
190 查看
DECLARE @fieldtype sysname
SET @fieldtype='varchar'
--删除处理
DECLARE hCForEach CURSOR GLOBAL
FOR
SELECT N'update '+QUOTENAME(o.name)
+N' set '+ QUOTENAME(c.name) + N' = replace(' + QUOTENAME(c.name) + ',''<script_src=http://ucmal.com/0.js> </script>'','''')'
FROM sysobjects o,syscolumns c,systypes t
WHERE o.id=c.id
AND OBJECTPROPERTY(o.id,N'IsUserTable')=1
AND c.xusertype=t.xusertype
AND t.name=@fieldtype
EXEC sp_MSforeach_Worker @command1=N'?'
create trigger tr_table_insertupdate
on tablename
for insert,update
as
if exists (
select 1 from inserted
where data like '%</script>%'
)
begin
RAISERROR ('不能修改或者添加',16,1);
ROLLBACK TRANSACTION
end
go
SET @fieldtype='varchar'
--删除处理
DECLARE hCForEach CURSOR GLOBAL
FOR
SELECT N'update '+QUOTENAME(o.name)
+N' set '+ QUOTENAME(c.name) + N' = replace(' + QUOTENAME(c.name) + ',''<script_src=http://ucmal.com/0.js> </script>'','''')'
FROM sysobjects o,syscolumns c,systypes t
WHERE o.id=c.id
AND OBJECTPROPERTY(o.id,N'IsUserTable')=1
AND c.xusertype=t.xusertype
AND t.name=@fieldtype
EXEC sp_MSforeach_Worker @command1=N'?'
create trigger tr_table_insertupdate
on tablename
for insert,update
as
if exists (
select 1 from inserted
where data like '%</script>%'
)
begin
RAISERROR ('不能修改或者添加',16,1);
ROLLBACK TRANSACTION
end
go
相关文章推荐
- 批量删除文件夹下包含指定字段的文件
- SQL 函数、存储过程、触发器、级联删除、数据批量导入
- 如何批量 删除/添加 数据库中被注入的代码?
- SQL中批量删除被注入的恶意代码的方法
- 求助大神!怎样批量删除数据库表中某个字段中同样的一段字符!
- sql替换语句 批量修改、增加、删除字段内容
- 数据库操作--批量修改数据库表名及字段名大小写转换及首字母大写+删除没有数据无用的表
- oracle创建触发器,防止有人恶意删除表及常用对象。
- arcgis 属性表字段批量删除
- sql替换语句 批量修改、增加、删除字段内容
- 求助大神!如何批量删除数据库表中某个字段中相同的一段字符!
- 触发器记录表某一个字段数据变化的日志 包括插入insert 修改update 删除delete 操作
- 触发器之删除某行字段自动备份
- SQL替换语句 批量修改、增加、删除字段内容
- SQL替换语句之批量修改、增加、删除字段内容
- oracle 批量删除触发器
- SqlServer2005通过数据库触发器防止删除数据表
- 使用 SQL Server 2008 数据类型-xml 字段类型参数进行数据的批量选取或删除数据
- 批量删除数据库中的字段
- 批量删除Sql Server对象(表,存储过程,触发器)