微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有一个存储过程,它将根据用户键入标准搜索文本框的内容返回搜索结果.按下在搜索框中输入后,我将查询传递给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注入.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐