Skip to content

Commit 20cf5b0

Browse files
authored
[Test Proxy] Sanitizer updates (#35419)
This is a stop-gap to fix some regexes until we can rely on test-proxy itself for sanitization. Signed-off-by: Paul Van Eck <[email protected]>
1 parent 5fd2c52 commit 20cf5b0

File tree

2 files changed

+20
-13
lines changed

2 files changed

+20
-13
lines changed

tools/azure-sdk-tools/devtools_testutils/azure_recorded_testcase.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import logging
88
import os
99
import os.path
10+
import re
1011
import six
1112
import sys
1213
import time
@@ -33,6 +34,11 @@
3334

3435
def _sanitize_token(token, fake_token):
3536
add_general_string_sanitizer(value=fake_token, target=token)
37+
38+
# By this point, the token sig value should've been sanitized.
39+
token = re.sub(r"(?<=sig=)[^&]*", SANITIZED, token)
40+
add_general_string_sanitizer(value=fake_token, target=token)
41+
3642
url_safe_token = token.replace("/", "%2F")
3743
add_general_string_sanitizer(value=fake_token, target=url_safe_token)
3844
async_token = token.replace("%3A", ":")

tools/azure-sdk-tools/devtools_testutils/proxy_startup.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -391,21 +391,22 @@ def set_common_sanitizers() -> None:
391391

392392
# Body regex sanitizers for sensitive patterns in request/response bodies
393393
batch_sanitizers[Sanitizer.BODY_REGEX] = [
394-
{"regex": "(client_id=)[^&]+", "value": "$1sanitized"},
395-
{"regex": "(client_secret=)[^&]+", "value": "$1sanitized"},
396-
{"regex": "(client_assertion=)[^&]+", "value": "$1sanitized"},
397-
{"regex": "(?:[\\?&](sv|sig|se|srt|ss|sp)=)(?<secret>(([^&\\s]*)))", "value": SANITIZED},
394+
{"regex": "(client_id=)(?<secret>[^&\\\"]+)", "group_for_replace": "secret", "value": SANITIZED},
395+
{"regex": "client_secret=(?<secret>[^&\\\"]+)", "group_for_replace": "secret", "value": SANITIZED},
396+
{"regex": "client_assertion=(?<secret>[^&\\\"]+)", "group_for_replace": "secret", "value": SANITIZED},
397+
{"regex": "(?:[\\?&](sv|sig|se|srt|ss|st|sp)=)(?<secret>[^&\\\"\\s]*)",
398+
"group_for_replace": "secret", "value": SANITIZED},
398399
{"regex": "refresh_token=(?<group>.*?)(?=&|$)", "group_for_replace": "group", "value": SANITIZED},
399400
{"regex": "access_token=(?<group>.*?)(?=&|$)", "group_for_replace": "group", "value": SANITIZED},
400-
{"regex": "token=(?<token>[^\\u0026]+)($|\\u0026)", "group_for_replace": "token", "value": SANITIZED},
401-
{"regex": "-----BEGIN PRIVATE KEY-----\\n(.+\\n)*-----END PRIVATE KEY-----\\n", "value": SANITIZED},
402-
{"regex": "(?<=<UserDelegationKey>).*?(?:<SignedTid>)(.*)(?:</SignedTid>)", "value": SANITIZED},
403-
{"regex": "(?<=<UserDelegationKey>).*?(?:<SignedOid>)(.*)(?:</SignedOid>)", "value": SANITIZED},
404-
{"regex": "(?<=<UserDelegationKey>).*?(?:<Value>)(.*)(?:</Value>)", "value": SANITIZED},
405-
{"regex": "(?:Password=)(.*?)(?:;)", "value": SANITIZED},
406-
{"regex": "(?:User ID=)(.*?)(?:;)", "value": SANITIZED},
407-
{"regex": "(?:<PrimaryKey>)(.*)(?:</PrimaryKey>)", "value": SANITIZED},
408-
{"regex": "(?:<SecondaryKey>)(.*)(?:</SecondaryKey>)", "value": SANITIZED},
401+
{"regex": "token=(?<token>[^&\\\"]+)($|&)", "group_for_replace": "token", "value": SANITIZED},
402+
{"regex": "-----BEGIN PRIVATE KEY-----\\n(?<cert>.+\\n)*-----END PRIVATE KEY-----\\n", "group_for_replace": "cert", "value": SANITIZED},
403+
{"regex": "(?<=<UserDelegationKey>).*?(?:<Value>)(?<group>.*)(?:</Value>)", "group_for_replace": "group", "value": SANITIZED},
404+
{"regex": "(?<=<UserDelegationKey>).*?(?:<SignedTid>)(?<group>.*)(?:</SignedTid>)", "group_for_replace": "group", "value": SANITIZED},
405+
{"regex": "(?<=<UserDelegationKey>).*?(?:<SignedOid>)(?<group>.*)(?:</SignedOid>)", "group_for_replace": "group", "value": SANITIZED},
406+
{"regex": "(?:Password=)(?<pwd>.*?)(?:;)", "group_for_replace": "pwd", "value": SANITIZED},
407+
{"regex": "(?:User ID=)(?<id>.*?)(?:;)", "group_for_replace": "id", "value": SANITIZED},
408+
{"regex": "(?:<PrimaryKey>)(?<key>.*)(?:</PrimaryKey>)", "group_for_replace": "key", "value": SANITIZED},
409+
{"regex": "(?:<SecondaryKey>)(?<key>.*)(?:</SecondaryKey>)", "group_for_replace": "key", "value": SANITIZED},
409410
]
410411

411412
# General regex sanitizers for sensitive patterns throughout interactions

0 commit comments

Comments
 (0)