2012-05-12 19 views
0

入力パラメータのSQL攻撃を防ぐにはどうしたらいいですか?安全でない文字(「」)SQL攻撃を防ぐ方法 - ストアドプロシージャの入力パラメータ

私は次のストアドプロシージャがあります。

を私は入力を保護したいと思います - ただ、パラメータを持つプロシージャを使用@NICKNAME_USER、@PASSWORD_USER

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SP_AUTH]') AND type in (N'P', N'PC')) 
DROP PROCEDURE [dbo].[SP_AUTH] 
GO 

CREATE PROCEDURE [dbo].[SP_AUTH] (@ACTION INT = NULL, 
            @NICKNAME_USER VARCHAR(250) = NULL, 
            @PASSWORD_USER VARCHAR(250) = NULL) 
AS 
BEGIN TRY 
    IF @ACTION = 'L' 
     BEGIN 

    SELECT U.ID AS ID_USER, 
      U.NICKNAME AS NICKNAME 
      FROM dbo.T_USERS AS U WITH (NOLOCK) 
      WHERE U.NICKNAME = @NICKNAME_USER 
      AND U.PASSWORD = @PASSWORD_USER 
    END 
END TRY 
BEGIN CATCH 

    DECLARE @ErrorMessage NVARCHAR(4000), 
      @ErrorSeverity INT, 
      @ErrorState INT 

    SELECT 
     @ErrorMessage = ERROR_MESSAGE(), 
     @ErrorSeverity = ERROR_SEVERITY(), 
     @ErrorState = ERROR_STATE(); 

    RAISERROR (@ErrorMessage, -- Message text. 
       @ErrorSeverity, -- Severity. 
       @ErrorState -- State. 
       ); 
END CATCH 

答えて

4

ができなくなりますSQLの詳細については、hereです。

関連する問題