ホームページ >データベース >mysql チュートリアル >パラメータを使用して動的 SQL クエリでテーブル名を安全に設定するにはどうすればよいですか?
動的 SQL クエリ: パラメーターを使用してテーブル名を設定します
動的 SQL クエリを処理するときは、通常、入力パラメーターに基づいてテーブル名を動的に設定する必要があります。 ID などのパラメータの設定は簡単ですが、テーブル名の設定には課題が伴う場合があります。
失敗した試行:
提供されたコードで示されている最初のアプローチは、SQL クエリ文字列にテーブル名を直接設定することです。ただし、このアプローチは SQL インジェクション攻撃に対して脆弱です。
OBJECT_ID 関数を使用した解決策:
セキュリティを確保し、悪意のある SQL インジェクションを回避するには、OBJECT_ID 関数を使用してテーブル名のオブジェクト ID を動的に解析することをお勧めします。そうすることで、不正な形式または挿入されたテーブル名が解決されなくなり、セキュリティの脆弱性が防止されます。
更新されたコードは次のとおりです:
<code class="language-sql">... SET @TableName = '<[db].><[schema].>tblEmployees' SET @TableID = OBJECT_ID(@TableName) --如果格式错误/注入,则不会解析。 ... SET @SQLQuery = 'SELECT * FROM ' + QUOTENAME(OBJECT_NAME(@TableID)) + ' WHERE EmployeeID = @EmpID'</code>
以上がパラメータを使用して動的 SQL クエリでテーブル名を安全に設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。