|
|
@@ -97,6 +97,51 @@ class SensitivePayloadRedactorTest {
|
|
|
assertEquals(1, node.get("keep").asInt());
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ void 超长JSON被截断后_app_secret仍被脱敏且不超两千() {
|
|
|
+ String raw = "{\"app_secret\":\"S1\",\"padding\":\"" + "x".repeat(3000) + "\"}";
|
|
|
+
|
|
|
+ String out = SensitivePayloadRedactor.redact(raw);
|
|
|
+
|
|
|
+ assertTrue(out.length() <= 2000, "实际长度 " + out.length());
|
|
|
+ assertFalse(out.contains("S1"), "截断后的 JSON 片段泄露了 app_secret: " + out);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void 超长JSON被截断后_付款码与转义的channel_extra仍被脱敏() {
|
|
|
+ String raw = "{\"auth_code\":\"123456\",\"channel_extra\":\"{\\\"openid\\\":\\\"o1\\\"}\","
|
|
|
+ + "\"padding\":\"" + "x".repeat(2500) + "\"}";
|
|
|
+
|
|
|
+ String out = SensitivePayloadRedactor.redact(raw);
|
|
|
+
|
|
|
+ assertTrue(out.length() <= 2000, "实际长度 " + out.length());
|
|
|
+ assertFalse(out.contains("123456"), "截断后的 JSON 片段泄露了 auth_code: " + out);
|
|
|
+ assertFalse(out.contains("o1"), "截断后的 JSON 片段泄露了 openid: " + out);
|
|
|
+ // 非敏感键保留,证明是「按键脱敏」而不是把整段丢掉
|
|
|
+ assertTrue(out.contains("auth_code"), out);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void 非JSON回退也脱敏JSON引号键的数值布尔与null() {
|
|
|
+ String out = SensitivePayloadRedactor.redact(
|
|
|
+ "前缀 \"sign\":123456,\"openid\":true,\"password\":null,\"keep\":\"ok\"");
|
|
|
+
|
|
|
+ assertTrue(out.contains("\"sign\":\"***\""), out);
|
|
|
+ assertTrue(out.contains("\"openid\":\"***\""), out);
|
|
|
+ assertTrue(out.contains("\"password\":\"***\""), out);
|
|
|
+ assertTrue(out.contains("\"keep\":\"ok\""), out);
|
|
|
+ assertFalse(out.contains("123456"), out);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void 非JSON回退_转义的JSON字符串值整段变星号() {
|
|
|
+ String out = SensitivePayloadRedactor.redact(
|
|
|
+ "x\"channel_extra\":\"{\\\"openid\\\":\\\"o1\\\"}\"y");
|
|
|
+
|
|
|
+ assertTrue(out.contains("\"channel_extra\":\"***\""), out);
|
|
|
+ assertFalse(out.contains("o1"), out);
|
|
|
+ }
|
|
|
+
|
|
|
@Test
|
|
|
void maskApiKey_保留前六位其余星号() {
|
|
|
assertEquals("abcdef***", SensitivePayloadRedactor.maskApiKey("abcdef123456"));
|