SQL Server 使用 SP_EXECUTESQL 安全動態執行 SQL 語法

SQL Server 變數使用示範(包含動態執行 SQL 語法) 這篇文章中有示範動態執行 SQL 語法,但是其實這很不安全,很容易受到 SQL Injection 攻擊。

我們可以使用內建的 sp_executesql 來傳入參數,避免全部語法都是動態組合而成,難以檢查傳入的內容是否安全。

使用示範:
    
DECLARE @SQL NVARCHAR(MAX)
DECLARE @ID INT

SET @SQL = N'SELECT * FROM Users WHERE UserId = @UserId'
SET @ID = 1001

EXEC sp_executesql @SQL, N'@UserId INT', @UserId = @ID
    

文章撰寫中...請稍後...

參考資料:
Microsoft.Learn - sp_executesql (Transact-SQL)

留言