Python SQL: validace vstupu obsahující speciální znaky

vesterna12

  • ***
  • 123
  • byrokracie zabíjí kreativitu
    • Zobrazit profil
    • E-mail
Do databáze [textové pole] potřebuji být schopný uložit všechny speciální znaky, které lze použít pro SQL injection.
Jak správně ošetřit takový vstup při použití "prepared statements" ? 


Re:Python SQL: validace vstupu obsahující speciální znaky
« Odpověď #1 kdy: 26. 02. 2023, 13:51:44 »
Důležité je použít binding hodnot, který bývá obvykle s prepared statements spojen. Tj. v SQL dotazu jsou místo hodnot zástupné znaky (často otazník) a pomocí propojení (bind) se pak před spuštěním dotazu propojí tyto zástupné parametry se skutečnými hodnotami. O to, aby to proběhlo správně, se postará databázový ovladač nebo samotná databáze.

Vy pak vstup žádným způsobem neošetřujete, prostě předáte vstup od uživatele tak, jak byl zadán.

Pokoušet se to řešit jinak, než bindováním, např. nějaké escapování vstupu, je bláhové, a s největší pravděpodobností by se vám nepodařilo ošetřit to správně (a hlavně nikdy nebudete míst jistotu, že je to správně).

vesterna12

  • ***
  • 123
  • byrokracie zabíjí kreativitu
    • Zobrazit profil
    • E-mail
Re:Python SQL: validace vstupu obsahující speciální znaky
« Odpověď #2 kdy: 26. 02. 2023, 14:12:20 »
Díky. To mi stačí.