关于不用字符串拼接SQL语句问题,请教大家;

coollele 2009-05-19 12:49:18
关于不用字符串拼接SQL语句问题,请教大家;

其实对于拼接的漏动我也明白了,会导致网站被SQL注入;可是我不太明白该如何进行修改;
比如以下案例:

texts=trim(request("titid"))
textid=trim(requet.querystring("id"))
sql="select * from abc where abc='"&texts&"' order by id desc"
又或都是这样的写法:
sql="select * from abc where abc like '%"&texts&"%' and id="& textid

像上面的语句,怎样不用SQL拼接字符串来实现呢??


请大虾指教???? 给出代码案例最好!!
...全文
215 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
存在注入与你是不是拼接的没有关系

而是与你的参数是否符合安全规则
  • 打赏
  • 举报
回复
Atai-Lu 2009-05-19
不是不用拼接,而是,你需要的参数,你要检测是否符合规则。
如果是数字类型的参数,那么你这么判断下,if not isnumeric(textid) or textid then textid=0
如果字符串参数比较有规律,比如需要的字符串参数为"1,12,132323,4323"这类参数,那么可以用正则去判断
另外,如果没必要使用N长的参数的话,那么可以判断字符长度是否超长,超长的话直接砍掉……

还有,插入、修改数据的时候,个人觉得最好不要用insert into、update这种语句(仅限于asp,如果都没有字符串参数的话例外)

  • 打赏
  • 举报
回复
vinceding 2009-05-19
同意3楼的做法
http://blog.csdn.net/vince6799/archive/2009/03/12/3984629.aspx
  • 打赏
  • 举报
回复
明珠佩佩 2009-05-19
下面是我常用的两个函数


' ============================================
' 函数功能:得到安全字符串(在查询中或有必要强行替换的表单中使用)
' 参数说明:
' str :被处理的字符串
' ============================================

Function GetSafeStr(Str)
GetSafeStr = Replace(Replace(Replace(Trim(Str), "'", ""), Chr(34), ""), ";", "")
End Function

' ============================================
' 函数功能:判断是否安全字符串,在注册登录等特殊字段中使用
' 参数说明:
' str :被处理的字符串
' ============================================

Function IsSafeStr(Str)
Dim s_BadStr, n, i
s_BadStr = "'  &<>?%,;:()`~!@#$^*{}[]|+-=" & Chr(34) & Chr(9) & Chr(32)
n = Len(s_BadStr)
IsSafeStr = True
For i = 1 To n
If InStr(Str, Mid(s_BadStr, i, 1)) > 0 Then
IsSafeStr = False
Exit Function
End If
Next
End Function
  • 打赏
  • 举报
回复
hookee 2009-05-19
这样做会多一次与数据库的交互

set cm.CommandText = "Update school set school_name = ? where id = ?"

cm.CommandType = adCmdText
cm.Prepared =true
cm.Parameters.append cm.CreateParameter("name",adChar,adParamInput,50)
cm.Parameters.append cm.CreateParameter("school_id, adInteger, adParamInput)
cm("name")="Golden Lion"
cm("id") = 1
cm.execute

  • 打赏
  • 举报
回复
相关推荐
发帖
ASP
加入

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2009-05-19 12:49
社区公告
暂无公告