以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  参数化SQL语句可以避免SQL注入吗?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=133538)

--  作者:pc005637
--  发布时间:2019/4/16 10:07:00
--  参数化SQL语句可以避免SQL注入吗?
实际工作,批量导入第三方数据库的字符串列时,采用拼接SQL语句的方式,如果对方字符串出现一些 ‘’ & + 等SQL特殊字符中,会提示语句有错误。如果采用参数化SQL语句能否避免这种情况?
--  作者:有点甜
--  发布时间:2019/4/16 10:32:00
--  
参数化可以避免这种问题
--  作者:有点甜
--  发布时间:2019/4/16 10:36:00
--  

当然,那你也可以写一个函数,判断字符串是否存在不规则的字符,如果存在,就提示错误。


--  作者:pc005637
--  发布时间:2019/4/16 10:47:00
--  不知道具体的 危险字符集
不知道具体的 危险字符集  有哪些字符需要处理。
--  作者:有点甜
--  发布时间:2019/4/16 11:25:00
--  
以下是引用pc005637在2019/4/16 10:47:00的发言:
不知道具体的 危险字符集  有哪些字符需要处理。

 

比如

 

http://www.cnblogs.com/xu-yi/p/10587889.html

 


--  作者:chen37280600
--  发布时间:2019/4/16 11:29:00
--  
送你一个玩意

\'思路:用正则表达式检查是否存在注入的关键词

Dim SqlString As String =" 1=1orsdf"
If  Regex.IsMatch(SqlString .ToLower(), "/response|group_concat|cmd|sysdate|xor|declare|db_name|char| and| or|truncate| asc| desc|drop |table|count|from|select|insert|update|delete|union|into|load_file|outfile/") Then
    MessageBox.show("发现SQL注入")
Else
    MessageBox.show("SQL检测通过")
End If

发现后,你要怎么处理,自行决定。鉴于注入sql都很难看,一般我就改为1=2,让它不能bb

--  作者:pc005637
--  发布时间:2019/4/16 11:33:00
--  谢谢
谢谢