我想屏蔽/隱藏只有json值不是鍵。 對於防爆: -屏蔽節點中的敏感信息
myObject = {"Name":"value1","Phoneno":"545454545445"}
Output should be like below:
myObject = {"key1":*****
***,"key2":*****}
能否請你告訴我,我們如何能在做的NodeJS這個? 謝謝。
我想屏蔽/隱藏只有json值不是鍵。 對於防爆: -屏蔽節點中的敏感信息
myObject = {"Name":"value1","Phoneno":"545454545445"}
Output should be like below:
myObject = {"key1":*****
***,"key2":*****}
能否請你告訴我,我們如何能在做的NodeJS這個? 謝謝。
如何:
let myObject = { "Name": "value1", "Phoneno": "545454545445" };
let output = {};
function mask(value: string) {
let maskedValue = "";
for (let i = 0; i < value.length; i++) {
maskedValue += "*";
}
return maskedValue;
}
Object.keys(myObject).forEach(key => {
output[key] = mask(myObject[key]);
});
console.log(output); // Object {Name: "******", Phoneno: "************"}
以下策略使用一個for...in
循環遍歷對象,用星號的鏈替換所有的屬性值。
const myObject = {"Name": "value1", "Phoneno": "545454545445"};
const mask = obj => {
const masked = {};
for (let key in obj) masked[key] = "*****";
return masked;
};
console.log("original:", myObject);
console.log("masked:", mask(myObject));
如果你想屏蔽值是星號,但同樣長度的原始(而不是恆定的長度),該for...in
循環更改爲以下:for (let key in obj) masked[key] = "*".repeat(obj[key].length);
。
UPDATE:屏蔽嵌套對象(甚至陣列)
在你的意見,你問有關在嵌套對象屏蔽值。
爲了處理一個嵌套的對象,甚至是任何嵌套排列的對象和/或數組的組合,您可能需要遞歸。簡而言之,如果當前值是一個原始值(例如一個字符串,一個數字,一個布爾值等),那麼將其替換爲虛擬字符串,但是如果當前值是一個對象本身(或一個數組),那麼重新 - 從一開始就將這個值發回掩蔽過程。
以下示例顯示了可能完成的一種方式。我用jQuery來檢測一個值是一個普通的對象還是一個數組。在這個例子中,對象屬性名稱以「A」,「B」,「C」等結尾。 ["foo", "bar"]
將被轉換爲{"0": "*****", "1": "*****"}
。
const myObject = {propA: "a", propB: {propBA: "ba", propBB: "bb"}, propC: ["c0", "c1"], propD: {propDA: "da", propDB: {propDBA: "dba", propDBB: "dbb"}, propDC: ["dc0", "dc1"]}, propE: ["e0", {propE1A: "e1a", propE1B: "e1b"}, ["e20", "e21"]]};
const mask = objOrArr => {
const masked = {};
for (let key in objOrArr) {
const val = objOrArr[key];
if ($.isPlainObject(val) || $.isArray(val)) {
masked[key] = mask(val);
} else {
masked[key] = "*****";
}
}
return masked;
};
console.log("original... ", myObject);
console.log("masked... ", mask(myObject));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
我不確定使用佔位符的確切對象的值長度是一個好主意。在我看來,使用靜態佔位符會更好。由於它被掩蓋,無論如何價值多長時間都沒關係。 – Vernon
@Vernon,夠了。將代碼更改爲'for(let key in obj)masked [key] =「*****」;'。使它更簡單。 ...將你的建議納入我的答案。 –
謝謝大家但是如果obect是象下面這樣:讓myObject的= { 標題:{ ID: 「1234」, 名稱: 「XYZ」, 用戶名: 「ABC」, 域: 「R」, 來源:「abc」, MessageVersion:「1。0" , SendDateTime:日期 }, 客戶:{ 事件: 「1234」 } }; – tiya
也許你會發現有用的庫https://github.com/tcdl/json-masker它允許你這樣做:
const mask = require('json-masker');
const myObject = {"Name": "value1", "Phoneno": "545454545445"};
const masked = mask(myObject); // will produce:
// {"Name": "xxxxx*", "Phoneno": "************"}
謝謝,這是工作。但是如果JSON如下所示 – tiya
像下面那樣?下面是什麼?我不明白 –