sql >> データベース >  >> RDS >> Sqlserver

SQLServer-動的ピボットテーブル-SQLインジェクション

    私たちはあなたの例に似た多くの仕事をしました。 SQLの差し止めについては心配していません。これは、ピボットされるデータを完全かつ完全に制御できるためです。悪意のあるコードがETLを介してデータウェアハウスに侵入することはありません。

    いくつかの考えとアドバイス:

    • nvarcahr(500)列でピボットする必要がありますか?私たちのものはvarchar(25)または数値であり、そこから有害なコードを忍び込むのはかなり難しいでしょう。
    • データチェックはどうですか?これらの文字列の1つに「]」文字が含まれている場合、それはハッキングの試みか、とにかく爆発するデータのいずれかであるようです。
    • セキュリティはどの程度堅牢ですか? Maloreyが(直接またはアプリケーションを介して)データベースにハッキングを忍び込ませないように、システムはロックダウンされていますか?

    はぁ。関数QUOTENAME()を覚えるには、それをすべて書く必要がありました。簡単なテストでは、そのようにコードに追加すると機能することが示されているようです(一時テーブルが削除されるのではなく、エラーが発生します):

    SELECT
            @columns = 
            STUFF
            (
                    (
                            SELECT DISTINCT
                                    ', [' + quotename(ColumnB, ']') + ']'
                            FROM
                                    #PivotTest
                            FOR XML PATH('')
                    ), 1, 1, ''
            )
    

    ほとんどの場合、値を[ブラケット]する必要があるため、これはピボット(およびピボット解除)の状況で機能するはずです。



    1. MariaDBでのSHOWCOLLATIONの仕組み

    2. 内部結合と外部結合;テーブルの順序は重要ですか?

    3. SQLclを使用するときにOracleクエリ結果をJSONファイルにエクスポートする方法

    4. PostgreSQLでグループごとに最初の行を取得する方法