ホームページ > データベース > mysql チュートリアル > ストアド プロシージャのパラメータを使用して SQL ログインを安全に作成するにはどうすればよいですか?

ストアド プロシージャのパラメータを使用して SQL ログインを安全に作成するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-18 10:36:20
オリジナル
160 人が閲覧しました

How Can I Securely Create SQL Logins Using Parameters in Stored Procedures?

ストアド プロシージャ内のパラメータを使用した SQL ログインの作成

SaaS データベース内でのテナント作成を自動化するために、開発者はCREATE LOGIN ステートメントでユーザー名とパスワードのパラメータ化された入力を使用するストアド プロシージャ。ただし、間違った構文に関連する不可解なエラー メッセージが表示されました。

問題の根本原因は、パラメータではなくリテラル値を必要とする CREATE LOGIN 構文にあります。これを解決するには、次の回避策があります。

  1. CREATE LOGIN コマンドを EXEC ステートメント内にラップします。
  2. CREATE LOGIN コマンドを文字列変数として動的に構築します。
  3. QUOTENAME() を利用して潜在的な SQL インジェクションを防止する

これらの変更を組み込んだストアド プロシージャの改訂版は次のとおりです。

CREATE PROCEDURE [MyScheme].[Tenants_InsertTenant]
    @username nvarchar(2048),
    @password nvarchar(2048)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    DECLARE @sql nvarchar(max) = 'CREATE LOGIN ' + QUOTENAME(@username) + ' WITH PASSWORD = ' + QUOTENAME(@password, '''');
    EXEC(@sql)
END
ログイン後にコピー

この回避策を実装することで、ストアド プロシージャは提供されたデータベースに基づいて SQL ログインを動的に作成できるようになりました。パラメーターを使用して、テナント作成プロセスを完全に自動化できます。

以上がストアド プロシージャのパラメータを使用して SQL ログインを安全に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート