Megosztás a következőn keresztül:


Biztonsági és felhasználói bevitel

A felhasználói adatok, amelyek bármilyen típusú bemenet (webes kérelemből vagy URL-címből származó adatok, a Microsoft Windows Forms-alkalmazások vezérlőinek bemenetei stb.) hátrányosan befolyásolhatják a kódot, mivel gyakran az adatok közvetlenül paraméterekként szolgálnak más kódok meghívásához. Ez a helyzet hasonló ahhoz a rosszindulatú kódhoz, amely furcsa paraméterekkel hívja meg a kódot, és ugyanazokat az óvintézkedéseket kell tenni. A felhasználói bevitelt valójában nehezebb biztonságossá tenni, mert nincs veremkeret a potenciálisan nem megbízható adatok jelenlétének nyomon követéséhez.

Ezek a legapradékosabb és legnehezebb biztonsági hibák közé tartoznak, mivel bár létezhetnek olyan kódban, amely látszólag nem kapcsolódik a biztonsághoz, átjárók, amelyek rossz adatokat adnak át más kódoknak. A hibák kereséséhez kövessen bármilyen bemeneti adatot, képzelje el a lehetséges értékek tartományát, és gondolja át, hogy az adatokat jelölő kód képes-e kezelni az összes ilyen esetet. Ezeket a hibákat a tartományellenőrzéssel és a kód által nem kezelhető bemenet elutasításával javíthatja ki.

A felhasználói adatokkal kapcsolatos néhány fontos szempont a következők:

  • A kiszolgáló válaszaiban szereplő felhasználói adatok a kiszolgáló ügyfélwebhelyének kontextusában futnak. Ha a webkiszolgáló felhasználói adatokat vesz fel, és beszúrja a visszaadott weblapra, előfordulhat például, hogy tartalmaz egy <szkriptcímkét> , és úgy fut, mintha a kiszolgálóról származna.

  • Ne feledje, hogy az ügyfél bármilyen URL-címet kérhet.

  • Fontolja meg a bonyolult vagy érvénytelen elérési utakat:

    • .. \ , rendkívül hosszú útvonalak.

    • Helyettesítő karakterek (*) használata.

    • Tokenbővítés (%token%).

    • Különleges jelentésű utak furcsa formái.

    • Alternatív fájlrendszer-streamnevek, például filename::$DATA.

    • A fájlnevek rövid verziói, például longfi~1 a következőhöz longfilename: .

  • Ne feledje, hogy az Eval(userdata) bármire képes.

  • Legyen óvatos a néhai kötéssel egy olyan névhez, amely bizonyos felhasználói adatokat tartalmaz.

  • Ha webes adatokkal foglalkozik, vegye figyelembe a különböző menekülési formákat, amelyek megengedettek, beleértve a következőket:

    • Hexadecimális feloldások (%nn).

    • Unicode-feloldások (%nnn).

    • Az UTF-8 túlhosszúságú feloldása (%nn%nn).

    • Kettős feloldások (%nn : %mmnn, ahol %mm a(z) %.

  • Legyen óvatos az olyan felhasználónevekkel, amelyek több canonical formátumúak lehetnek. Gyakran használhatja például a MYDOMAIN\felhasználónév űrlapot vagy a username@mydomain.example.com űrlapot.

Lásd még