Skip to content

Commit 605a824

Browse files
authored
Add Email and Phone Number Masking to URI Sanitization (#35)
mask for phone number and email
1 parent 41c6495 commit 605a824

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

src/Support/Uri.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ public static function sanitize(string $uri, array $uriMask = []): string
2626
'/\/(?<=\/)([A-Z]{3}-?\d[0-9A-Z]\d{2})(?=\/)?/i',
2727
'/\/(?<=\/)[0-9A-F]{16,24}(?=\/)?/i',
2828
'/\/(?<=\/)\d+(?=\/)?/',
29+
'/\/(?<=\/)\+?\d{10,15}(?=\/|$)/',
2930
'/\/(?<=\/)R[RN]\d{16}[A-Za-z0-9]{11}/',
31+
'/\/(?<=\/)[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}(?=\/|$)/i',
3032
'/\/([A-Z]{3,}(?:-[A-Z]{3,})*)-([A-Z0-9]{3}-\d+(?:_\d{3})?|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|[A-Za-z0-9]{8,})(?=\/|$)/i',
3133
],
3234
),
@@ -39,7 +41,9 @@ public static function sanitize(string $uri, array $uriMask = []): string
3941
'/<LICENSE-PLATE>',
4042
'/<OID>',
4143
'/<NUMBER>',
44+
'/<PHONE-NUMBER>',
4245
'/<EXTERNAL-ID>',
46+
'/<EMAIL>',
4347
'/<PREFIXED-ID>',
4448
],
4549
),

tests/Cases/UriTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,21 @@ public function testSanitizeNumbers(): void
3232
self::assertSame('/v8/test/<NUMBER>/<NUMBER>/<NUMBER>/', Uri::sanitize('/v8/test/123/456/789/'));
3333
}
3434

35+
public function testSanitizePhoneNumber(): void
36+
{
37+
$phoneNumber = '+5511983999292';
38+
$phoneNumber2 = '+9607392675';
39+
40+
self::assertSame('/v1/test', Uri::sanitize('/v1/test'));
41+
self::assertSame('/v2/test/<PHONE-NUMBER>', Uri::sanitize("/v2/test/{$phoneNumber}"));
42+
self::assertSame('/v3/test/<PHONE-NUMBER>/bar', Uri::sanitize("/v3/test/{$phoneNumber}/bar"));
43+
self::assertSame('/v4/test/<PHONE-NUMBER>/bar/<PHONE-NUMBER>/', Uri::sanitize("/v4/test/{$phoneNumber}/bar/{$phoneNumber2}/"));
44+
self::assertSame('/v5/test/<PHONE-NUMBER>/<PHONE-NUMBER>', Uri::sanitize("/v5/test/$phoneNumber/$phoneNumber2"));
45+
self::assertSame('/v6/test/<PHONE-NUMBER>/<PHONE-NUMBER>/', Uri::sanitize("/v6/test/$phoneNumber/$phoneNumber2/"));
46+
self::assertSame('/v7/test/<PHONE-NUMBER>/<PHONE-NUMBER>/<PHONE-NUMBER>', Uri::sanitize("/v7/test/$phoneNumber/$phoneNumber2/$phoneNumber"));
47+
self::assertSame('/v8/test/<PHONE-NUMBER>/<PHONE-NUMBER>/<PHONE-NUMBER>/', Uri::sanitize("/v8/test/$phoneNumber/$phoneNumber2/$phoneNumber/"));
48+
}
49+
3550
public function testSanitizeLicensePlatesStrings(): void
3651
{
3752
self::assertSame('/v1/test', Uri::sanitize('/v1/test'));
@@ -162,6 +177,21 @@ public function testClearUriExternalIds(): void
162177
self::assertSame('/v9/test/<EXTERNAL-ID>/bar/<NUMBER>', Uri::sanitize('/v9/test/RR2101818220123720H9KJTERfw1a/bar/12345'));
163178
}
164179

180+
public function testSanitizeEmail(): void
181+
{
182+
$email = '[email protected]';
183+
$email2 = '[email protected]';
184+
185+
self::assertSame('/v1/test', Uri::sanitize('/v1/test'));
186+
self::assertSame('/v2/test/<EMAIL>', Uri::sanitize("/v2/test/{$email}"));
187+
self::assertSame('/v3/test/<EMAIL>/bar', Uri::sanitize("/v3/test/{$email}/bar"));
188+
self::assertSame('/v4/test/<EMAIL>/bar/<EMAIL>/', Uri::sanitize("/v4/test/{$email}/bar/{$email2}/"));
189+
self::assertSame('/v5/test/<EMAIL>/<EMAIL>', Uri::sanitize("/v5/test/$email/$email2"));
190+
self::assertSame('/v6/test/<EMAIL>/<EMAIL>/', Uri::sanitize("/v6/test/$email/$email2/"));
191+
self::assertSame('/v7/test/<EMAIL>/<EMAIL>/<EMAIL>', Uri::sanitize("/v7/test/$email/$email2/$email"));
192+
self::assertSame('/v8/test/<EMAIL>/<EMAIL>/<EMAIL>/', Uri::sanitize("/v8/test/$email/$email2/$email/"));
193+
}
194+
165195
public function testClearUriPrefixedId(): void
166196
{
167197
// Casos de teste específicos solicitados

0 commit comments

Comments
 (0)