Egy webáruházi megjegyzés szöveges adat a rendelési rendszerben. Ugyanez a tartalom egy CSV-export megnyitásakor képletként értelmeződhet, ha a fogadó táblázatkezelő így kezeli a mező elejét. Az export attól még lehet szabályos CSV, hogy a későbbi megnyitás veszélyes vagy félrevezető viselkedést okoz.
A cikk védekező adatkezelési ellenőrzést mutat be. A példák ártalmatlan szövegek és egyszerű összeadások. Valódi ügyféladatot, jelszót vagy hozzáférési kulcsot ne használj exporttesztben, és a figyelmeztetéseket ne kapcsold ki a próba kedvéért.
Két eltérő feldolgozási lépést válassz szét
A CSV olvasója először sorokra és mezőkre bontja az állományt. Ehhez elválasztójelet és idézőjelezési szabályt használ. A táblázatkezelő ezután dönthet arról, hogy egy mező szám, dátum, szöveg vagy képlet.
A =1+1 tartalmú ügyfélmegjegyzésnél az elvárt eredmény az négy karakterből álló szöveg megőrzése. Képletértelmezés esetén a cellában ehelyett a 2 eredmény jelenhet meg. Ilyenkor az eredeti jelentés már megváltozott, pedig az export oszlopai akár tökéletesen a helyükön maradtak.
Az OWASP CSV Injection útmutatója hangsúlyozza a képletkezdő karaktereket és a táblázatkezelők közötti eltéréseket. Arra is figyelmeztet, hogy a mentés és újranyitás egy korábban alkalmazott védelmet megváltoztathat. Ezért nincs minden fogyasztó számára egyformán biztonságos, általános CSV-tisztítás.
Az idézőjelezést a saját céljának megfelelően kezeld
Egy vesszőt tartalmazó „piros, nagy” megjegyzés idézőjelezése arra szolgál, hogy egyetlen mező maradjon. Ettől a mező típusa még nincs feltétlenül szövegként rögzítve a későbbi alkalmazás számára.
A saját exportellenőrzésedben ezért külön teszteld az oszlopszámot és a cellák értelmezését. Egy próbafájlban szerepelhet közönséges szöveg, vesszőt tartalmazó szöveg, idézőjelet tartalmazó szöveg, a fenti ártalmatlan képletkezdet és egy szabályos negatív szám. A várt értéket minden oszlopnál előre rögzítsd.
A negatív mennyiség például visszárus üzleti adat lehet. Egy ellenőrzött számoszlop −12 értékét másként kell kezelni, mint egy szabad szövegként érkező, műveletre hasonlító tartalmat. A mező szerepét az export sémája mondja meg.
Válassz a felhasználáshoz illő átadást
Gépi adatcserénél olyan formátum és séma hasznos, amelyben a szövegmező szöveg marad. A JSON formázóval a dokumentum szerkezete ellenőrizhető, de az üzleti adattípusokat a fogadó rendszernek is be kell tartania.
Táblázatos emberi ellenőrzéshez egy natív munkafüzetben a megbízható exportkód külön szöveges cellatípust írhat. CSV-nél a fogadó alkalmazás dokumentált szöveges importját kell tesztelni. Egy utólagos, minden mező elé tett karakter módosíthatja a valódi adatot, ezért az eredeti gépi exportot és az emberi megtekintésre készített változatot külön érdemes tárolni.
A CSV–JSON átváltó a formátumváltásban segít. Önmagában egy átváltás nem minősül minden későbbi táblázatkezelőre kiterjedő biztonsági auditnak.
A próba az újranyitással zárul
A saját támogatott alkalmazásodban importáld a tesztadatot, ellenőrizd a megjelenő értéket és a cella típusát, majd mentsd és nyisd meg újra. A változat és az importbeállítás kerüljön a tesztnaplóba. Ugyanezt ismételd meg minden ténylegesen támogatott fogadó rendszerrel.
Sikeres tesztnél a megjegyzés tartalma azonos marad, az elválasztójelek nem hoznak létre új oszlopot, és a szöveg nem válik végrehajtandó képletté. A nyers ügyfélmegjegyzést ne írd felül a megtekintési export kedvéért; a két feladat külön adatpéldányon kezelhető.
Gyakori kérdések
Elég dupla idézőjelbe tenni minden mezőt?
A CSV mezőhatárait ettől szabályosan kezelheted, de a táblázatkezelő későbbi típusfelismerése külön folyamat. A tényleges fogyasztóval kell tesztelni.
Minden mínuszjellel kezdődő adat hibás?
Nem. Számoszlopban a negatív érték szabályos lehet. Szabad szövegnél és ellenőrzött numerikus mezőnél eltérő validáció szükséges.
A megnyitáskor kapott figyelmeztetés kikapcsolható a könnyebb használatért?
Az export hibáját ne a védelem kikapcsolásával kezeld. A formátumot, az adattípust és az importfolyamatot kell rendezni.