sql >> Database >  >> RDS >> Sqlserver

SQL Server - Dynamische PIVOT-tabel - SQL-injectie

We hebben veel werk gedaan dat lijkt op uw voorbeeld. We hebben ons geen zorgen gemaakt over SQL-injectie, deels omdat we volledige en totale controle hebben over de gegevens die worden gedraaid - er is gewoon geen manier waarop schadelijke code via ETL in ons datawarehouse kan komen.

Enkele gedachten en advies:

  • Moet u draaien met nvarcahr(500)-kolommen? Die van ons zijn varchar(25) of numeriek, en het zou behoorlijk moeilijk zijn om daar schadelijke code doorheen te sluipen.
  • Hoe zit het met het controleren van gegevens? Het lijkt erop dat als een van die strings een "]"-teken bevat, het een hackpoging is of gegevens die je toch zullen ontploffen.
  • Hoe robuust is uw beveiliging? Is het systeem zodanig vergrendeld dat Malorey zijn hacks niet in uw database kan sluipen (rechtstreeks of via uw applicatie)?

Haha. Het kostte dat allemaal om de functie QUOTENAME() te onthouden. Een snelle test lijkt erop te wijzen dat het toevoegen aan uw code zou werken (u krijgt een foutmelding, geen tijdelijke tabel):

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

Dit zou moeten werken voor situaties met draaien (en ongedaan maken), aangezien u bijna altijd uw waarden [haakjes] moet plaatsen.



  1. MySQL auto-increment kolom springt met 10 waarom?

  2. Ondersteunt uw Salesforce-stuurprogramma bulkacties?

  3. Een jaar aftrekken van een datum in MariaDB

  4. Is de tekenreeksoperator "+" zo eenvoudig?