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

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

Mary-Kate Olsen
リリース: 2024-12-17 02:14:25
オリジナル
696 人が閲覧しました

How Can I Securely Create Dynamic SQL Logins Using Stored Procedures?

動的 SQL ログインの作成

開発者がストアド プロシージャを使用して SQL ログインを動的に作成しようとすると、問題が発生することがよくあります。この一般的な問題の解決策として、この記事では、簡単で安全なアプローチを使用して動的ログインを構築する方法を説明します。

問題の説明

Justin という名前の開発者は、次の点で支援を求めました。 SaaS データベースにテナントを作成し、事前定義されたロールへのアクセスを許可するストアド プロシージャを作成します。ただし、ログインを作成しようとしたときにエラーが発生しました:

"CREATE LOGIN @username WITH PASSWORD = @password"

SQL Manager が次のエラーを返しました:

  • 「近くの構文が正しくありません」 '@username'."
  • "キーワード 'with' の近くの構文が正しくありません。このステートメントが共通テーブル式、XML 名前空間句、または変更追跡コンテキスト句である場合、前のステートメントは次の文字で終了する必要があります。あるsemicolon."

回答

この問題を解決する鍵は、CREATE LOGIN がユーザー名のリテラル値のみを受け入れることを理解することにあります。これに対処するには、ログイン作成ステートメントを動的に構築する必要があります。

次のコードは、安全なアプローチを示しています。

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

このアプローチでは、リテラルのユーザー名とパスワードを quotename でラップして、ユーザー名とパスワードを引用符で囲みます。 SQL インジェクション攻撃。動的 SQL ステートメントを使用し、パラメーター値を慎重に処理することにより、ストアド プロシージャを使用して動的に SQL ログインを作成することが可能になります。

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

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