SQL クエリ内でテーブル名を動的に指定することは可能ですが、SQL インジェクションの脆弱性に対する強力な保護手段が必要です。 推奨されるアプローチでは、組み込みの SQL Server 関数を利用します。
テーブル名を保持する変数を宣言します:
DECLARE @TableName NVARCHAR(100);
テーブル名を変数に割り当てます:
SET @TableName = '<[db].><[schema].>tblEmployees';
テーブルのオブジェクト ID を取得します:
SET @TableID = OBJECT_ID(@TableName);
安全のためにオブジェクト ID を使用して SQL クエリを構築します:
SET @SQLQuery = 'SELECT * FROM ' + QUOTENAME(OBJECT_NAME(@TableID)) + ' WHERE EmployeeID = @EmpID';
sp_executesql
:
EXECUTE sp_executesql @SQLQuery, @ParameterDefinition, @EmpID;
このメソッドは、テーブル名が安全に処理されることを保証し、OBJECT_ID
と QUOTENAME
を使用して入力を SQL ステートメントに組み込まれる前にサニタイズすることで SQL インジェクション攻撃を防ぎます。 パラメータ化されたクエリで sp_executesql
を使用すると、セキュリティがさらに強化されます。
以上がSQL クエリでテーブル名を安全に動的に設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。