動的 SQL ログインの作成
開発者がストアド プロシージャを使用して SQL ログインを動的に作成しようとすると、問題が発生することがよくあります。この一般的な問題の解決策として、この記事では、簡単で安全なアプローチを使用して動的ログインを構築する方法を説明します。
問題の説明
Justin という名前の開発者は、次の点で支援を求めました。 SaaS データベースにテナントを作成し、事前定義されたロールへのアクセスを許可するストアド プロシージャを作成します。ただし、ログインを作成しようとしたときにエラーが発生しました:
"CREATE LOGIN @username WITH PASSWORD = @password"
SQL Manager が次のエラーを返しました:
回答
この問題を解決する鍵は、CREATE LOGIN がユーザー名のリテラル値のみを受け入れることを理解することにあります。これに対処するには、ログイン作成ステートメントを動的に構築する必要があります。
次のコードは、安全なアプローチを示しています。
DECLARE @sql nvarchar(max) = 'CREATE LOGIN ' + quotename(@username) + ' WITH PASSWORD = ' + quotename(@password, ''''); EXEC(@sql)
このアプローチでは、リテラルのユーザー名とパスワードを quotename でラップして、ユーザー名とパスワードを引用符で囲みます。 SQL インジェクション攻撃。動的 SQL ステートメントを使用し、パラメーター値を慎重に処理することにより、ストアド プロシージャを使用して動的に SQL ログインを作成することが可能になります。
以上がストアド プロシージャを使用して動的 SQL ログインを安全に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。