tar*_*ppa 3 sql-server sql-injection
我有一个ASP.Net MVC应用程序,它使用SQL 2012作为数据库服务器.我使用了视图,存储过程(有/没有动态sql查询).我听说动态sql可能是sql注入的受害者.
这是我的示例动态查询之一..
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)
Run Code Online (Sandbox Code Playgroud)
如何编写此查询以防止sql注入?
SQL中的前提与应用程序代码中的前提基本相同...从不直接将输入连接为代码,而是将其视为参数.所以如果你的查询是这样的:
SET @Query = 'SELECT * FROM USERS WHERE Username = @Username AND Password = @Password';
Run Code Online (Sandbox Code Playgroud)
然后你可以使用参数执行它sp_executesql:
exec sp_executesql @Query, N'@Username varchar(100), @Password varchar(100)', @Username, @Password
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1227 次 |
| 最近记录: |