总结一下网站注入与防范的方法
来源:互联网 发布:mac安装win7无法安装 编辑:程序博客网 时间:2024/06/05 12:03
最近看到很多人的网站都被注入js,被iframe之类的。非常多。
本人曾接手过一个比较大的网站,被人家入侵了,要我收拾残局。。
1.首先我会检查一下服务器配置,重新配置一次服务器安全,可以参考
http://hi.baidu.com/zzxap/blog/item/18180000ff921516738b6564.html
2.其次,用麦咖啡自定义策略,即使网站程序有漏洞,别人也很难在文件上写入代码了。
参考自定义策略,有了这个策略,再烂的程序,你也无法写入我的文件
http://hi.baidu.com/zzxap/blog/item/efe093a7e0f2c190d04358ef.html
3.可以用网络超级巡警删除被注入的JS代码。
参考
http://hi.baidu.com/anlish/blog/item/ba45bb18eac77e0534fa4134.html
4.如何批量删除数据库中被注入的代码?
在数据库查询分析器运行这段代码即可
- SQL code
- DECLARE @fieldtype sysnameSET @fieldtype='varchar'--删除处理DECLARE hCForEach CURSOR GLOBALFORSELECT 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 tWHERE o.id=c.id AND OBJECTPROPERTY(o.id,N'IsUserTable')=1 AND c.xusertype=t.xusertype AND t.name=@fieldtypeEXEC sp_MSforeach_Worker @command1=N'?'
5.创建一个触发器,只要有 </script>就不给插入,对性能会有点影响
- SQL code
- create trigger tr_table_insertupdateon tablenamefor insert,updateasif exists (select 1 from inserted where data like '%</script>%')begin RAISERROR ('不能修改或者添加',16,1); ROLLBACK TRANSACTIONendgo
6.最重要的还是程序的写法,用参数化SQL或存储过程
例如
- C# code
- protected void cmdok_Click(object sender, EventArgs e) { //添加信息 StringBuilder sql = new StringBuilder( " insert into m_phone ( pid,PhoneName,
- num,price,phonetype,onSellTime,color,weight,Video,Camera,phoneSize,phoneSystem,
- Memorysize,PhoneDesc,Standbytime,ScreenSize,Frequency,InputMethod,Soundrecord,
- gps,fm,mp3,email,Infrared,game,clock,Calendar,Calculator,Bluetooth) "); sql.Append(" values (@pid,@TextPhoneName,@Textnum,@Textprice,
- @Dropphonetype2,@TextonSellTime,@Textcolor,@Textweight "); ................. SqlParameter[] paras = { new SqlParameter("@pid", SqlDbType.Int, 4) , new SqlParameter("@TextPhoneName", SqlDbType.NVarChar, 50) , new SqlParameter("@Textnum", SqlDbType.Int, 4) , new SqlParameter("@Textprice", SqlDbType.Int, 4) , new SqlParameter("@Dropphonetype2", SqlDbType.VarChar, 20) , new SqlParameter("@TextonSellTime", SqlDbType.DateTime, 8) , new SqlParameter("@Textcolor", SqlDbType.VarChar, 20) , new SqlParameter("@Textweight", SqlDbType.NVarChar, 50) , ........... }; string[] stra = {Dropphonetype.SelectedValue,TextPhoneName.Text , Textnum.Text,
- Textprice.Text, Dropphonetype2.SelectedValue, TextonSellTime.Text, Textcolor.Text, Textweight.Text, .............}; int a=stra.Length; int j; for ( j = 0; j < a; j++) { paras[j].Value = stra[j]; } int strpid = 0; string sqla = sql.ToString(); try { SqlHelper.ExcuteNonQurey(sqla, CommandType.Text, paras);//执行添加数据
- //获取刚才插入的id号 strpid = Convert.ToInt32(SqlHelper.ExcuteSclare(sqla, CommandType.Text, paras)); } catch (SqlException ex) { cmdreturn.Text = ex.Message.ToString(); } cmdreturn.Text = strpid.ToString();。。。。。。。。。
7.通过URL传递的参数要用加密解密
- C# code
- 传输string szTmp = "safdsfdsafdsfytrsd";szTmp = Server.UrlEncode(szTmp); 接收STRING STRA=Server.UrlDecode(request.querystring(szTmp));
8.把要使用的参数处理一下单引号,再放到SQL里面
例如 string stra=aa.replace("'","''")
用参数化SQL可以不用处理单引号
指定参数类型和过滤掉单引号,就可以杜绝99.9%入侵了
另外说一句:网上那些被人奉如圣经的过滤 update insert 等关键字的程序是用处不大的 upupdatedate 过滤掉 update还是update
还会造成不必要的麻烦
- 总结一下网站注入与防范的方法
- 总结一下网站注入与防范的方法
- 总结一下网站注入与防范的方法
- 总结一下网站注入与防范的方法
- 总结一下网站注入与防范的方法
- 总结一下网站注入与防范的方法
- 总结一下网站注入与防范的方法
- 总结一下网站注入与防范的方法
- 总结一下网站注入与防范的方法
- 总结一下网站注入与防范的方法
- 转帖 - 总结一下网站注入与防范的方法 by - zzxap
- [推荐] 总结一下网站注入与防范的方法[问题点数:100分,结帖人:zzxap]
- 防范网站被注入的方法总结
- 网站注入与防范的方法
- 网站注入与防范的常用方法
- 网站注入与防范的方法
- 网站注入与防范ASP.NET
- 常见sql注入的防范总结
- fopen()失败后获取失败信息
- 安装wireshark出问题了
- 当分手归于沉寂
- 独立按键数码管显示键值
- 浅谈OOP
- 总结一下网站注入与防范的方法
- Exe 9 统计文件中的整型数字的平均值(去掉一个最大和最小值)
- 让cygwin启动时加载.bashrc
- 一维数组转二维数组,旋转
- 叶子的离开,是风的追逐,还是树的不留恋?
- Symbian中的Http应用
- Hibernate中报can't insert Or update ,外键错误
- 不错的查找服务器漏洞工具:Acunetix_Web_Vulnerability_Scanner_6.5
- POJ3006 Dirichlet's Theorem on Arithmetic Progressions