加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 存储过程查询中的SQL注入

发布时间:2020-12-16 09:53:13 所属栏目:asp.Net 来源:网络整理
导读:我有一个存储过程,它将根据用户键入标准搜索文本框的内容返回搜索结果.按下在搜索框中输入后,我将查询传递给search.aspx?q =无论用户输入什么. search.aspx有一个sqldatasource,它接受一个查询字符串参数并调用一个连接多个表的存储过程,并包含以下where子
我有一个存储过程,它将根据用户键入标准搜索文本框的内容返回搜索结果.按下在搜索框中输入后,我将查询传递给search.aspx?q =无论用户输入什么.

search.aspx有一个sqldatasource,它接受一个查询字符串参数并调用一个连接多个表的存储过程,并包含以下where子句……

where (description like '%' + @query + '%' or title like '%' + @query + '%'  or     calls.call_id like @query or r.firstname = @query or r.lastname = @query
or n.note like '%' + @query + '%')

…这个sql注入是安全的,即使用这样的参数吗?

谢谢,

解决方法

不,这不容易受SQL注入,因为它使用SQL参数.假设有人试图通过提供@query的值来执行 SQL injection:

“; DROP TABLE学生;

使用您提供的代码仍然是安全的,因为除了非SQL参数外,查询全部都是您的;这是一个字符串.即使字符串包含SQL,也不会执行它,除非您的存储过程实际上是executed.从来没有这样做过(除非你有充分的理由(但即便如此,你应该先重新设计)).只需使用参数来清理用户输入,就可以轻松避免SQL注入.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读