Ein Kennwort steht in den Quellen
Symptom: check oder build endet mit Exitcode 2 und „Ein Kennwort (PWD=) steht in der Quelle“ und nennt Datei
und Zeile. Ein Kennwort, das nur in der Datenbank steht, wird nicht gefunden, bevor es exportiert ist: commit prüft
die Quellen vor seinem Export (siehe In Access Geändertes committen).
Umgebung
Alle Versionen des WKL Office SDK. Durchsucht werden die Objekte (Abfragen, Formulare, Berichte, Module, Makros), die
Tabellendaten, die Menübänder und die Modelle; nicht durchsucht werden references.json,
application/properties.json, die Tabellenschemas und die Designs.
Ursache
Ein Verbindungstext enthält ein Kennwort mit seinem Wert (PWD=... oder Password=...), zum Beispiel in einer
Pass-Through-Abfrage oder in einer Verbindungszeichenfolge in VBA. Jeder, der das Repository lesen kann, kann es lesen,
und jeder Klon und jedes CI-Protokoll trägt es weiter.
Lösung
- Entfernen Sie den Wert aus der Quelle, und lassen Sie die Anwendung ihn zur Laufzeit beziehen: über die Windows-Anmeldung (
Trusted_Connection=Yes), über eine Abfrage beim Benutzer oder über den Linked Tables Manager der WKL Forms Object Library, der Verbindungen ohne Kennwörter führt. - Ein leerer Wert (
PWD=;) und ein Platzhalter (PWD={password},$(Password)) werden akzeptiert. Die Prüfung hält jeden Wert, der mit{beginnt oder an beliebiger Stelle$enthält, für einen Platzhalter;PWD={s3cret}(ein ODBC-Kennwort in geschweiften Klammern) oderPWD=Pa$$w0rdbesteht sie daher. - Ändern Sie das Kennwort auf dem Server: Es stand in den Dateien.
Hinweise
- Was die Prüfung nicht findet. Sie sucht nach
PWD=oderPassword=, gefolgt von einem Wert. Nicht gemeldet werden ein Wert, der mit einem Anführungszeichen oder einem Apostroph beginnt (PWD="secret",PWD='secret', auch der Beginn eines VBA-Zeichenfolgenausdrucks), ein Wert, der mit{beginnt oder$enthält, ein Kennwort unter einem anderen Schlüssel oder eines, das zur Laufzeit zusammengesetzt wird. Eincheckohne Befund ist daher kein Beweis, dass die Quellen kein Kennwort enthalten. - Eine VBA-Anweisung, die einer Variablen oder Eigenschaft dieses Namens etwas zuweist (
m_Password = Value,Me.Password = txtPwd), ist Code, kein Verbindungstext, und wird nicht gemeldet.
Ein Pfad in ein Benutzerprofil (C:\Users\<name>\...) wird nur als Warnung gemeldet: Er existiert auf diesem Rechner
für diesen Benutzer; ersetzen Sie ihn durch einen Pfad, den jeder Rechner hat.