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注入.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....