|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP脚本是采用明文(plaintext)方式来编写的。程序|打击SQL注进被那些菜鸟级其余所谓黑客妙手玩出了味道,发明如今年夜部分黑客进侵都是基于SQL注进完成的,哎,谁让这个进门简单呢,好了,不说空话了,如今我入手下手说假如编写通用的SQL防注进程序一样平常的http哀求不过乎get和post,以是只需我们在文件中过滤一切post大概get哀求中的参数信息中不法字符便可,以是我们完成http哀求信息过滤就能够判别是是不是遭到SQL注进打击。
IIS传送给asp.dll的get哀求是是以字符串的情势,,当传送给Request.QueryString数据后,asp剖析器会剖析Request.QueryString的信息,,然后依据"&",分出各个数组内的数据以是get的拦阻以下:
起首我们界说哀求中不克不及包括以下字符:
|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare
各个字符用"|"离隔,,然后我们判别的失掉的Request.QueryString,详细代码以下:
dimsql_injdata
SQL_injdata="|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
SQL_inj=split(SQL_Injdata,"|")
IfRequest.QueryString<>""Then
ForEachSQL_GetInRequest.QueryString
ForSQL_Data=0ToUbound(SQL_inj)
ifinstr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0Then
Response.Write"<ScriptLanguage=****>alert(世界影戏同盟SQL通用防注进体系提醒↓nn请不要在参数中包括不法字符实验注进!);history.back(-1)</Script>"
Response.end
endif
next
Next
EndIf
如许我们就完成了get哀求的注进的拦阻,可是我们还要过滤post哀求,以是我们还得持续思索request.form,这个也是以数组情势存在的,我们只必要再进一次轮回判别便可。代码以下:
IfRequest.Form<>""Then
ForEachSql_PostInRequest.Form
ForSQL_Data=0ToUbound(SQL_inj)
ifinstr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0Then
Response.Write"<ScriptLanguage=****>alert(世界影戏同盟SQL通用防注进体系提醒↓nn请不要在参数中包括不法字符实验注进!nnHTTP://www.521movie.com);history.back(-1)</Script>"
Response.end
endif
next
next
endif
好了半途而废,我们已完成了get和post哀求的信息拦阻,你只必要在conn.asp之类的翻开数据库文件之前援用这个页面便可。宁神的持续开辟你的程序,不必再思索是不是还会遭到SQL注进打击。岂非不是么?
</p>asp,你就只能等着微软给你解决,它不乐意你就只好悲催。而且asp跑在windows服务器上,windows服务器跟linux比起来简直弱爆了! |
|