解决ASP防SQL注入攻击程序问题
现在比较流行的SQL注入工具的工作方式是通过GET和POST来完成具体的注入。我们可以将注入时所用到的一切符号过滤掉。那么我们可以通过简单的判断语句来达到目的。我们先来过滤GET吧。
代码如下:
dim sql_injdata SQL_inj SQL_Get
SQL_injdata = "’|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
SQL_inj = split(SQL_Injdata,"|")
If Request.QueryString<>"" Then
For Each SQL_Get In Request.QueryString
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Then
Response.Write "<Script Language=JavaScript>alert(’请不要在参数中包含非法字符尝试注入!’);history.back(-1)</Script>"
Response.end
end if
next
Next
End If
这样我们通过简单的语句我们就把一些注入所必须的语句和符号过滤掉了。非常小巧灵便,只要插到像conn.asp这样类似被调用比较广泛的页面中。同样POST我们也可以通过如下代码过滤,我们可以将两段代码整和到一起。
我们来看看代码吧:
If Request.Form<>"" Then
For Each Sql_Post In Request.Form
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then
Response.Write "<Script Language=JavaScript>alert(’请不要在参数中包含非法字符尝试注入! ’);history.back(-1)</Script>"
Response.end
end if
next
next
end if
网上又流行一个加强版的ASP防注代码。
代码如下:
<%
'ASP防注入之解决方案
'特殊页面处理
'因为有些页通过流式传递(比如含有文件上传的表单)
'如果单一使用穷举Form对象的操作就会出错
'所以要把这些页面过滤出来,同时在页面中使用sql("检测的字串")才行
'将本页用include方法放在头部以让所有页都可以调用,比如include在conn.asp里
'如果有流式上传的页面请把该页加到表page中,以防form冲突
Dim N_no,N_noarray,req_Qs,req_F,N_i,N_dbstr,Conn,N_rs,N_userIP,N_thispage
N_userip = Request.ServerVariables("REMOTE_ADDR")
N_thispage = LCase(Request.ServerVariables("URL"))
N_no = "'|;|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare" '可以自己
相关文档:
http://blog.csdn.net/fenglibing/archive/2007/10/24/1841537.aspx
1、将一个表中的内容拷贝到另外一个表中
insert into testT1(a1,b1,c1) select a,b,c from test;
insert into testT select * from test; (前提是兩個表的結構完全相同)
insert into notebook(id,title,content)
se ......
今天在网上上看见一篇“将SQL查询结果转化为pojo对象的”博客,博主自定义做了一个类如下:
import java.lang.reflect.Field;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.property.ChainedPropertyAccessor;&n ......
drop table #t
create table #t(req_spid int,obj_name sysname)
declare @s nvarchar(4000)
,@rid int,@dbname sysname,@id int,@objname sysnam ......
知: 字段A='F:\photo\Winter Leaves.jpg'
要求:分段截取每段字符[字段A不能为TEXT类型,否则报错]
解决方法:
---截取字符串A的第一个\左边的字符串
select left(A,charindex('/',A)-1)
输出结果:F:
---截取\中间的字符串
select left(stuff(A,1,charindex('/',A),''),charindex('/',stuff(A,1,c ......