Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server - Tabel PIVOT Dinamis - Injeksi SQL

Kami telah melakukan banyak pekerjaan yang mirip dengan contoh Anda. Kami tidak khawatir tentang perintah SQL, sebagian karena kami memiliki kontrol penuh dan total atas data yang diputar--tidak mungkin kode berbahaya dapat menembus ETL ke gudang data kami.

Beberapa pemikiran dan saran:

  • Apakah Anda perlu melakukan pivot dengan kolom nvarcahr(500)? Kami adalah varchar(25) atau numerik, dan akan sangat sulit untuk menyelundupkan kode yang merusak melalui sana.
  • Bagaimana dengan pengecekan data? Sepertinya jika salah satu string tersebut berisi karakter "]", itu bisa jadi merupakan upaya peretasan atau data yang akan meledakkan Anda.
  • Seberapa kuat keamanan Anda? Apakah sistem dikunci sedemikian rupa sehingga Malorey tidak dapat menyelinapkan peretasannya ke dalam basis data Anda (baik secara langsung atau melalui aplikasi Anda)?

Hah. Butuh menulis semua itu untuk mengingat fungsi QUOTENAME(). Tes cepat tampaknya menunjukkan bahwa menambahkannya ke kode Anda seperti itu akan berhasil (Anda akan mendapatkan kesalahan, bukan tabel temp yang dijatuhkan):

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

Ini akan bekerja untuk situasi pivot (dan unpivot), karena Anda hampir selalu harus [mengikat] nilai Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memulihkan Database SQL Server (T-SQL)

  2. 3 Cara Mengembalikan Semua Tabel TANPA Kunci Utama di SQL Server

  3. Apakah ada fungsi Max di SQL Server yang mengambil dua nilai seperti Math.Max ​​di .NET?

  4. Konfigurasikan Lingkungan StartUp di SQL Server Management Studio (SSMS) - Tutorial SQL Server / TSQL Bagian 7

  5. Hasil SSMS ke Kotak - CRLF tidak disimpan dalam salin/tempel - ada teknik yang lebih baik?