繁体   English   中英

存储过程查询中的SQL注入

[英]SQL Injection in Stored Procedure Query

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

'; DROP TABLE STUDENTS;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM