Geslo je v izvornih datotekah
Simptom: check ali build se konča z izhodno kodo 2 in sporočilom „Geslo (PWD=) je zapisano v viru“, ki navede
datoteko in vrstico. Gesla, ki obstaja samo v podatkovni zbirki, preverjanje ne najde, dokler ni izvoženo: commit
izvorne datoteke preveri, preden izvozi podatkovno zbirko (glejte Potrjevanje sprememb iz programa Access).
Okolje
Vse različice WKL Office SDK. Preverjanje zajame objekte (poizvedbe, obrazce, poročila, module, makre), podatke tabel,
trakove in modele; ne zajame pa references.json, application/properties.json, shem tabel in tem.
Vzrok
Povezovalni niz vsebuje geslo z vrednostjo (PWD=... ali Password=...), na primer v prepustni poizvedbi ali v
povezovalnem nizu v kodi VBA. Prebere ga lahko vsak, ki ima dostop do repozitorija, vsebuje pa ga tudi vsak klon in
vsak dnevnik CI.
Rešitev
- Vrednost odstranite iz izvorne datoteke; aplikacija naj geslo pridobi šele med izvajanjem: s prijavo v sistem Windows (
Trusted_Connection=Yes), s pozivom ali prek upravitelja povezav (Linked Tables Manager) WKL Forms Object Library, ki povezave hrani brez gesel. - Prazna vrednost (
PWD=;) in ograda (PWD={password},$(Password)) sta dovoljeni. Preverjanje vsako vrednost, ki se začne z{ali kjer koli vsebuje$, šteje za ogrado, zatoPWD={s3cret}(geslo ODBC v zavitih oklepajih) aliPWD=Pa$$w0rdne bo sporočeno. - Geslo spremenite na strežniku, saj je bilo zapisano v datotekah.
Opombe
- Česa preverjanje ne najde. Išče
PWD=aliPassword=, ki mu sledi vrednost. Ne sporoči vrednosti, ki se začne z dvojnim ali enojnim narekovajem (PWD="secret",PWD='secret', tudi začetek nizovnega izraza VBA), vrednosti, ki se začne z{ali vsebuje$, gesla pod drugim ključem ali gesla, sestavljenega med izvajanjem. Čecheckne najde ničesar, to torej ni dokaz, da izvorne datoteke ne vsebujejo gesla. - Stavek VBA, ki dodeli vrednost spremenljivki ali lastnosti s tem imenom (
m_Password = Value,Me.Password = txtPwd), je koda, ne povezovalni niz, zato ni sporočen.
Pot v uporabniški profil (C:\Users\<name>\...) je sporočena samo kot opozorilo: obstaja le na enem računalniku za
enega uporabnika. Nadomestite jo s potjo, ki obstaja na vsakem računalniku.