Sql server SQL Server如何防止动态SQL中的SQL注入
我有一个ASP.NETMVC应用程序,它使用SQL 2012作为数据库服务器。 我使用过视图、存储过程(有/没有动态sql查询)。我听说动态sql可能是sql注入的受害者 下面是我的一个示例动态查询Sql server SQL Server如何防止动态SQL中的SQL注入,sql-server,sql-injection,Sql Server,Sql Injection,我有一个ASP.NETMVC应用程序,它使用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)
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注入?sql中的前提与应用程序代码中的前提基本相同。。。永远不要直接将输入串接为代码,而是将其视为参数。因此,如果您的查询是这样的:
SET @Query = 'SELECT * FROM USERS WHERE Username = @Username AND Password = @Password';
然后,您可以使用sp_executesql
的参数执行它:
exec sp_executesql @Query, N'@Username varchar(100), @Password varchar(100)', @Username, @Password
感谢你花时间把事情做好!!!太多的人只是盲目地将这种代码投入生产,他们的网站就被劫持了。