前端注入攻击_网站防止js注入攻击

hacker|
116

什么是javascript注入攻击?

Javascript注入攻击指的是通过在网页地址后加JavaScript代码,影响系统运作。

JavaScript注入漏洞能发生作用主要依赖两个关键的动作,一个是用户要能从界面中注入JavaScript到系统的内存或者后台存储系统中;二是系统中存在一些UI会展示用户注入的数据。

比如注入漏洞最常见的就是发生在各种类型的名字中,比如系统中的人名等等,因为名字往往会在各种系统上显示,如果在某个用户输入名字的时候注入了脚本,那么受其影响的各个系统都有发生注入漏洞的风险。

php防止sql注入以及xss跨站脚本攻击

1.post数据

封装转义函数 防sql注入  eag:addslashes($username);addslashes($password); 

eag:防止sql注入函数封装 

function deepslashes($data){

#判断$data的表现形式 并且需要处理空的情况

if(empty($data)){

return($data);

}

#高级简写 return is_array($data) ? array_map('deepslashes',$data) : addslashes($data);

#初级写法

if(is_array($data)){

#递归循环遍历处理多维数组

foreach ($data as $v) {

return deepslashes($v);

}

}else{

#单一变量

return addslashes($data);

}

#初级写法

}

2.get数据

指url 传参数导致sql发生改变

解决方案

①强制转换,使用函数intval 或者 数据类型 的关键字int

②隐式转换,通过运算,只需要+0即可

3.xss跨站脚本攻击

指恶意攻击向web页面插入html、js标签导致页面出现错误

解决方案

转义标签'' ''即可,有以下php函数可解决

htmlspecialchars 函数 和 htmlentites函数

eag:

function deepslashes($data){

#判断$data的表现形式 并且需要处理空的情况

if(empty($data)){

return($data);

}

return is_array($data) ? array_map('deepslashes',$data) : htmlspecialchars ($data);

}

如何防止网站被攻击 ASP.NET拜托了各位 谢谢

1.首先检查一下服务器配置,重新配置一次服务器安全,可以参考 2.其次,用麦咖啡自定义策略,即使网站程序有漏洞,别人也很难在文件上写入代码了。 参考自定义策略,有了这个策略,再烂的程序,你也无法写入我的文件 3.可以用网络超级巡警删除被注入的JS代码。 参考 4.如何批量删除数据库中被注入的代码? 在数据库查询分析器运行这段代码即可 SQL code 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= ; /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'?' 5.创建一个触发器,只要有/script就不给插入,对性能会有点影响 SQL code 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 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);//执行添加数据 strpid = Convert.ToInt32(SqlHelper.ExcuteSclare(sqla, CommandType.Text, paras)); //获取刚才插入的id号 } 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 还会造成不必要的麻烦

aspx页面怎么防御SQL注入JS码?

数据在插入数据库之前,可以处理 取到的数据,比如用 空字符‘’ 来替换 里面的javascript 等等 字符。全部规则 过滤完以后 在插入数据库

0条大神的评论

发表评论