English
 电子信箱
 加入收藏

  威盾防火墙 >> 新闻中心 >> 业界动态 >> 如何防止存储过程拼接字符串的sql注入问题

 

如何防止存储过程拼接字符串的sql注入问题

威盾防火墙 2014-12-12

 
ALTER PROCEDURE [dbo].[np_click_detail_add]
@visitor_token     BIGINT,  
    @visitor_session BIGINT,
    @remote_ip         VARCHAR(15),
    @user_id            VARCHAR(50),
    @view_page          VARCHAR(255),
    @ref_page           VARCHAR(255),
    @ref_ad             VARCHAR(32),
    @create_date        DATETIME,
    @vistior_type       INT
   
AS
BEGIN
    
  SET NOCOUNT ON

declare @sql nvarchar(2000)
declare @table_name varchar(100)
DECLARE @log_date varchar(8)
SET @log_date = CONVERT(varchar(100), @create_date, 112)

set @table_name='nt_click_log_'+@log_date
set @sql= 'insert '+ @table_name +' (
visitor_token,
visitor_session,
remote_ip,
user_id,
view_page,
ref_page,
ref_ad,
create_date,
create_datetime,
visitor_type
) '
  +'values ('+
    CONVERT(varchar(20),@visitor_token)+
','+CONVERT(varchar(20),@visitor_session) +
','''+@remote_ip +
''','''+@user_id +
''','''+@view_page +
''','''+@ref_page +
''','''+@ref_ad +
''','''+CONVERT(varchar(8), @create_date, 112)+
''','''+CONVERT(varchar(30),@create_date,121) +
''','+CONVERT(varchar(20),@vistior_type) +')'
  BEGIN TRY
  exec sp_executesql @sql
END TRY
BEGIN CATCH
exec nt_add_click_table_today @log_date
exec sp_executesql @sql
END CATCH
SET NOCOUNT OFF


这样的存储过程会产生sql注入吗?请问该如何修改呢??

相关内容: 最新内容:
五种提高 SQL 性能的方法[2014-12-12]
Sql Server存储过程编写经验和优化措[2014-12-12]
SQL Server应用程序中的高级SQL注入(2)[2014-12-12]
如何进行防SQL注入?[2014-12-11]
SQL注入漏洞入侵的过程及其防范措施[2014-12-10]
总结揭露骇客入侵ASP+Access或ASP+MSSQL网站的手法+防御[2014-12-10]
vs2005操作word2003![2014-12-12]
服务器(WIndows2003)部署asp.net网站生成word文档经常遇到的问题![2014-12-12]
NET1.1下,使用C#自动生成Word2003文档(通过操作COM组件实现)[2014-12-12]
Ajax错误处理机制技术探讨[2014-12-12]
VS2005网站发布不便问题讨论[2014-12-12]
五种提高 SQL 性能的方法[2014-12-12]