消除数据库JS入侵的脚本
2009-11-23 17:00
274 查看
这几天接连被问到网站数据库被sql注入后很多字段被改加了js代码,网上查了一下,看来也是批处理写入的,那么只有用同样的办法来解决了
上代码
代码CREATE PROCEDURE spCheckJsInjection AS
declare @t varchar(555),@c varchar(555)
declare table_cursor cursor for select a.name,b.name from sysobjects a,syscolumns b where a.id=b.id and a.xtype='u' and (b.xtype=35 or b.xtype=99 or b.xtype=231 or b.xtype=167 )
open table_cursor
fetch next from table_cursor into @t,@c
while(@@fetch_status=0)
begin
exec('
if exists (select * from ['+@t+'] where ['+@c+'] like ''%<script%'')
begin
update ['+@t+'] set ['+@c+']=left(cast(['+@c+'] as varchar),CHARINDEX(''<script'', ['+@c+'])-1) where ['+@c+'] like ''%<script%''
end
' )
fetch next from table_cursor into @t,@c
end
close table_cursor
deallocate table_cursor;
上面判断凡是<script打头的内容,其后面全部过滤掉,这样可以解决这个问题。但如果要彻底解决问题,我认为比较快的解决办法不是要求所有人去改程序,这个不现实,自己的东西还好说,别人的东西是不允许你随便改的。那么怎么办呢?比较完美快速的办法就是readonly账号和owner账号分开用,select操作一律用readonly,这样通过url参数传递的注入可以有效屏蔽。同样,对于sql注入这类问题,我觉得与其只是在程序上注意外,数据库权限账号的合理设置是必须的,这个防线可以解决很大的开发问题带来的影响。
另外,经过上述设置后,哪些网站数据库运行了相当长的时间也没有出现这种问题了。据说以前是几分钟就被改写。这些做木马的人也是太可恶的,为了赚钱不择手段啊。几分钟的频率去注入别人的数据库,当别人不用这个网站啊,呵呵。
上代码
代码CREATE PROCEDURE spCheckJsInjection AS
declare @t varchar(555),@c varchar(555)
declare table_cursor cursor for select a.name,b.name from sysobjects a,syscolumns b where a.id=b.id and a.xtype='u' and (b.xtype=35 or b.xtype=99 or b.xtype=231 or b.xtype=167 )
open table_cursor
fetch next from table_cursor into @t,@c
while(@@fetch_status=0)
begin
exec('
if exists (select * from ['+@t+'] where ['+@c+'] like ''%<script%'')
begin
update ['+@t+'] set ['+@c+']=left(cast(['+@c+'] as varchar),CHARINDEX(''<script'', ['+@c+'])-1) where ['+@c+'] like ''%<script%''
end
' )
fetch next from table_cursor into @t,@c
end
close table_cursor
deallocate table_cursor;
上面判断凡是<script打头的内容,其后面全部过滤掉,这样可以解决这个问题。但如果要彻底解决问题,我认为比较快的解决办法不是要求所有人去改程序,这个不现实,自己的东西还好说,别人的东西是不允许你随便改的。那么怎么办呢?比较完美快速的办法就是readonly账号和owner账号分开用,select操作一律用readonly,这样通过url参数传递的注入可以有效屏蔽。同样,对于sql注入这类问题,我觉得与其只是在程序上注意外,数据库权限账号的合理设置是必须的,这个防线可以解决很大的开发问题带来的影响。
另外,经过上述设置后,哪些网站数据库运行了相当长的时间也没有出现这种问题了。据说以前是几分钟就被改写。这些做木马的人也是太可恶的,为了赚钱不择手段啊。几分钟的频率去注入别人的数据库,当别人不用这个网站啊,呵呵。
相关文章推荐
- 从数据库从读取数据动态生成JS表格脚本
- 数据库被注入 JS脚本 代码, 清除 方法
- mongod使用js脚本对数据库进行操作
- 一段歪曲了概念的脚本,JS怎么能读服务器上的数据库呢??
- 删除MSSQL数据库text字段中恶意脚本<Script="***.js"></script>的方法
- 一段歪曲了概念的脚本,JS怎么能读服务器上的数据库呢??
- 清除数据库注入的js脚本代码
- NodeJS Mongodb 创建数据库、集合、数据库用户自动化脚本
- 用 js 写了一个批量保存文本文件入数据库的脚本
- mongodb 的js脚本或pymongodb脚本修改数据库的字段值
- 数据库被注入脚本后,数据库恢复办法,<script src=http://3b3.org/c.js></script>
- 用 js 写了一个批量保存文本文件入数据库的脚本
- kettle设置数据库连接变量、js脚本设置变量、数据流合并、设置分支等
- sql注入 js脚本注入 html入侵(自己收集的一些解决方案)欢迎指正
- sql server用脚本生成数据库脚本
- DB2中导出数据库的所有DDL脚本
- 分享一个自己写的用python比对数据库表数据的脚本
- 最好用的JS图像无缝滚动脚本
- 脚本学习之---菜鸟级别入门---mysql简单删除数据库【三】