首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server如何在动态sql中防止sql注入

问SQL Server如何在动态sql中防止sql注入
EN

Stack Overflow用户
提问于 2015-07-10 18:59:21
回答 1查看 1.4K关注 0票数 3

我有一个使用SQL2012作为数据库服务器的ASP.Net MVC应用程序。我使用了视图、存储过程(有/没有动态sql查询)。我听说动态sql可能是sql注入的牺牲品。

这是我的一个示例动态查询。

代码语言:javascript
复制
DECLARE @Username AS Varchar(100);
DECLARE @Password AS Varchar(100);

SET @Username = 'user1';
SET @Password = '123';

DECLARE @Query AS VARCHAR(MAX);

SET @Query = 'SELECT * FROM USERS WHERE Username ='+ @Username+ ' AND Password = '+@Password+';

EXEC(@Query)

如何编写防止sql注入的查询?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-10 19:06:11

这个前提在SQL中和在应用程序代码中基本上是一样的.永远不要将输入直接连接为代码,而是将其作为参数处理。因此,如果您的查询如下所示:

代码语言:javascript
复制
SET @Query = 'SELECT * FROM USERS WHERE Username = @Username AND Password = @Password';

然后,您可以使用sp_executesql使用参数执行它。

代码语言:javascript
复制
exec sp_executesql @Query, N'@Username varchar(100), @Password varchar(100)', @Username, @Password
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31348367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档