Skip to content

Commit 7a0d358

Browse files
authored
feat(Integrations): update user login and signup events collection (#2976)
1 parent 6b3218e commit 7a0d358

File tree

94 files changed

+1537
-483
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+1537
-483
lines changed

appsec/src/extension/tags.c

Lines changed: 423 additions & 159 deletions
Large diffs are not rendered by default.

appsec/src/extension/user_tracking.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ bool dd_parse_user_collection_mode(
181181
return true;
182182
}
183183

184-
zend_string *nullable dd_user_id_anonymize(zend_string *nonnull user_id)
184+
zend_string *nullable dd_user_info_anonymize(zend_string *nonnull user_info)
185185
{
186186
zend_string *digest;
187187
const php_hash_ops *ops;
@@ -215,7 +215,7 @@ zend_string *nullable dd_user_id_anonymize(zend_string *nonnull user_id)
215215
#endif
216216

217217
ops->hash_update(
218-
context, (unsigned char *)ZSTR_VAL(user_id), ZSTR_LEN(user_id));
218+
context, (unsigned char *)ZSTR_VAL(user_info), ZSTR_LEN(user_info));
219219

220220
digest = zend_string_alloc(ops->digest_size, 0);
221221
ops->hash_final((unsigned char *)ZSTR_VAL(digest), context);

appsec/src/extension/user_tracking.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ void dd_find_and_apply_verdict_for_user(zend_string *nonnull user_id);
2323
bool dd_parse_user_collection_mode(
2424
zai_str value, zval *nonnull decoded_value, bool persistent);
2525

26-
zend_string*nullable dd_user_id_anonymize(zend_string *nonnull user_id);
26+
zend_string *nullable dd_user_info_anonymize(zend_string *nonnull user_info);
2727

2828
user_collection_mode dd_get_user_collection_mode(void);
2929
zend_string *nonnull dd_get_user_collection_mode_zstr(void);

appsec/tests/extension/headers_collection_03.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ $helper = Helper::createInitedRun([
5959
rinit();
6060
$helper->get_commands(); //ignore
6161

62-
track_user_signup_event("1234", [], false);
62+
track_user_signup_event("1234", []);
6363

6464
rshutdown();
6565
$helper->get_commands(); //ignore

appsec/tests/extension/headers_collection_04.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ $helper = Helper::createInitedRun([
5959
rinit();
6060
$helper->get_commands(); //ignore
6161

62-
track_user_login_success_event("1234", [], false);
62+
track_user_login_success_event("1234", []);
6363

6464
rshutdown();
6565
$helper->get_commands(); //ignore

appsec/tests/extension/headers_collection_05.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ $helper = Helper::createInitedRun([
5959
rinit();
6060
$helper->get_commands(); //ignore
6161

62-
track_user_login_failure_event("1234", true, ['email' => '[email protected]'], false);
62+
track_user_login_failure_event("1234", true, ['email' => '[email protected]']);
6363

6464
rshutdown();
6565
$helper->get_commands(); //ignore

appsec/tests/extension/headers_collection_06.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ $helper = Helper::createInitedRun([
6060
rinit();
6161
$helper->get_commands(); //ignore
6262

63-
track_user_signup_event("1234", [], true);
63+
track_user_signup_event("1234", []);
6464

6565
rshutdown();
6666
$helper->get_commands(); //ignore

appsec/tests/extension/headers_collection_07.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ $helper = Helper::createInitedRun([
6060
rinit();
6161
$helper->get_commands(); //ignore
6262

63-
track_user_login_success_event("1234", [], true);
63+
track_user_login_success_event("1234", []);
6464

6565
rshutdown();
6666
$helper->get_commands(); //ignore

appsec/tests/extension/headers_collection_08.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ $helper = Helper::createInitedRun([
6060
rinit();
6161
$helper->get_commands(); //ignore
6262

63-
track_user_login_failure_event("1234", true, ['email' => '[email protected]'], true);
63+
track_user_login_failure_event("1234", true, ['email' => '[email protected]']);
6464

6565
rshutdown();
6666
$helper->get_commands(); //ignore

appsec/tests/extension/headers_collection_09.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ $helper = Helper::createInitedRun([
6060
rinit();
6161
$helper->get_commands(); //ignore
6262

63-
track_user_signup_event("1234", [], true);
63+
track_user_signup_event("1234", []);
6464

6565
rshutdown();
6666
$helper->get_commands(); //ignore

appsec/tests/extension/headers_collection_10.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ $helper = Helper::createInitedRun([
6060
rinit();
6161
$helper->get_commands(); //ignore
6262

63-
track_user_login_success_event("1234", [], true);
63+
track_user_login_success_event("1234", []);
6464

6565
rshutdown();
6666
$helper->get_commands(); //ignore

appsec/tests/extension/headers_collection_11.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ $helper = Helper::createInitedRun([
6060
rinit();
6161
$helper->get_commands(); //ignore
6262

63-
track_user_login_failure_event("1234", true, ['email' => '[email protected]'], true);
63+
track_user_login_failure_event("1234", true, ['email' => '[email protected]']);
6464

6565
rshutdown();
6666
$helper->get_commands(); //ignore

appsec/tests/extension/headers_collection_12.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ $helper = Helper::createInitedRun([
5959
rinit();
6060
$helper->get_commands(); //ignore
6161

62-
track_user_login_failure_event("1234", true, ['email' => '[email protected]'], false);
63-
track_user_login_failure_event("1234", true, ['email' => '[email protected]'], true);
62+
track_user_login_failure_event("1234", true, ['email' => '[email protected]']);
63+
track_user_login_failure_event("1234", true, ['email' => '[email protected]']);
6464

6565
rshutdown();
6666
$helper->get_commands(); //ignore

appsec/tests/extension/headers_collection_13.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ $helper = Helper::createInitedRun([
5959
rinit();
6060
$helper->get_commands(); //ignore
6161

62-
track_user_login_failure_event("1234", true, ['email' => '[email protected]'], true);
63-
track_user_login_failure_event("1234", true, ['email' => '[email protected]'], false);
62+
track_user_login_failure_event("1234", true, ['email' => '[email protected]']);
63+
track_user_login_failure_event("1234", true, ['email' => '[email protected]']);
6464

6565
rshutdown();
6666
$helper->get_commands(); //ignore

appsec/tests/extension/track_user_login_failure_event.phpt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ include __DIR__ . '/inc/ddtrace_version.php';
1212

1313
ddtrace_version_at_least('0.79.0');
1414

15-
track_user_login_failure_event("Admin", false,
15+
track_user_login_failure_event("sdkID", false,
1616
[
1717
"value" => "something",
1818
"metadata" => "some other metadata",
@@ -34,13 +34,15 @@ root_span_get_meta():
3434
Array
3535
(
3636
[runtime-id] => %s
37-
[appsec.events.users.login.failure.usr.id] => Admin
37+
[appsec.events.users.login.failure.usr.id] => sdkID
38+
[appsec.events.users.login.failure.usr.login] => sdkID
3839
[appsec.events.users.login.failure.track] => true
3940
[_dd.appsec.events.users.login.failure.sdk] => true
4041
[appsec.events.users.login.failure.value] => something
4142
[appsec.events.users.login.failure.metadata] => some other metadata
4243
[appsec.events.users.login.failure.email] => [email protected]
4344
[appsec.events.users.login.failure.usr.exists] => false
45+
[server.business_logic.users.login.failure] => null
4446
[_dd.runtime_family] => php
4547
[_dd.p.dm] => -4
4648
)

appsec/tests/extension/track_user_login_failure_event_automated_anon_mode.phpt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,18 @@ DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE=anon
88
--FILE--
99
<?php
1010
use function datadog\appsec\testing\root_span_get_meta;
11-
use function datadog\appsec\track_user_login_failure_event;
11+
use function datadog\appsec\track_user_login_failure_event_automated;
1212
include __DIR__ . '/inc/ddtrace_version.php';
1313

1414
ddtrace_version_at_least('0.79.0');
1515

16-
track_user_login_failure_event("1234",
16+
track_user_login_failure_event_automated("login", "automatedID",
1717
true,
1818
[
1919
"value" => "something",
2020
"metadata" => "some other metadata",
2121
"email" => "[email protected]"
2222
]
23-
, true
2423
);
2524

2625
echo "root_span_get_meta():\n";
@@ -31,8 +30,12 @@ root_span_get_meta():
3130
Array
3231
(
3332
[runtime-id] => %s
34-
[appsec.events.users.login.failure.usr.id] => anon_03ac674216f3e15c761ee1a5e255f067
35-
[appsec.events.users.login.failure.track] => true
33+
[appsec.events.users.login.failure.usr.id] => anon_b3ddafd7029d645b44fb990eea55b003
34+
[_dd.appsec.usr.id] => anon_b3ddafd7029d645b44fb990eea55b003
3635
[_dd.appsec.events.users.login.failure.auto.mode] => anonymization
36+
[appsec.events.users.login.failure.usr.login] => anon_428821350e9691491f616b754cd8315f
37+
[_dd.appsec.usr.login] => anon_428821350e9691491f616b754cd8315f
38+
[appsec.events.users.login.failure.track] => true
3739
[appsec.events.users.login.failure.usr.exists] => true
40+
[server.business_logic.users.login.failure] => null
3841
)

appsec/tests/extension/track_user_login_failure_event_automated_anon_mode_compat.phpt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,18 @@ DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING=safe
88
--FILE--
99
<?php
1010
use function datadog\appsec\testing\root_span_get_meta;
11-
use function datadog\appsec\track_user_login_failure_event;
11+
use function datadog\appsec\track_user_login_failure_event_automated;
1212
include __DIR__ . '/inc/ddtrace_version.php';
1313

1414
ddtrace_version_at_least('0.79.0');
1515

16-
track_user_login_failure_event("1234",
16+
track_user_login_failure_event_automated("login", "automatedID",
1717
true,
1818
[
1919
"value" => "something",
2020
"metadata" => "some other metadata",
2121
"email" => "[email protected]"
2222
]
23-
, true
2423
);
2524

2625
echo "root_span_get_meta():\n";
@@ -31,8 +30,12 @@ root_span_get_meta():
3130
Array
3231
(
3332
[runtime-id] => %s
34-
[appsec.events.users.login.failure.usr.id] => anon_03ac674216f3e15c761ee1a5e255f067
35-
[appsec.events.users.login.failure.track] => true
33+
[appsec.events.users.login.failure.usr.id] => anon_b3ddafd7029d645b44fb990eea55b003
34+
[_dd.appsec.usr.id] => anon_b3ddafd7029d645b44fb990eea55b003
3635
[_dd.appsec.events.users.login.failure.auto.mode] => anonymization
36+
[appsec.events.users.login.failure.usr.login] => anon_428821350e9691491f616b754cd8315f
37+
[_dd.appsec.usr.login] => anon_428821350e9691491f616b754cd8315f
38+
[appsec.events.users.login.failure.track] => true
3739
[appsec.events.users.login.failure.usr.exists] => true
40+
[server.business_logic.users.login.failure] => null
3841
)

appsec/tests/extension/track_user_login_failure_event_automated_anon_mode_full_name.phpt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,18 @@ DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE=anonymization
88
--FILE--
99
<?php
1010
use function datadog\appsec\testing\root_span_get_meta;
11-
use function datadog\appsec\track_user_login_failure_event;
11+
use function datadog\appsec\track_user_login_failure_event_automated;
1212
include __DIR__ . '/inc/ddtrace_version.php';
1313

1414
ddtrace_version_at_least('0.79.0');
1515

16-
track_user_login_failure_event("1234",
16+
track_user_login_failure_event_automated("login", "automatedID",
1717
true,
1818
[
1919
"value" => "something",
2020
"metadata" => "some other metadata",
2121
"email" => "[email protected]"
2222
]
23-
, true
2423
);
2524

2625
echo "root_span_get_meta():\n";
@@ -31,8 +30,12 @@ root_span_get_meta():
3130
Array
3231
(
3332
[runtime-id] => %s
34-
[appsec.events.users.login.failure.usr.id] => anon_03ac674216f3e15c761ee1a5e255f067
35-
[appsec.events.users.login.failure.track] => true
33+
[appsec.events.users.login.failure.usr.id] => anon_b3ddafd7029d645b44fb990eea55b003
34+
[_dd.appsec.usr.id] => anon_b3ddafd7029d645b44fb990eea55b003
3635
[_dd.appsec.events.users.login.failure.auto.mode] => anonymization
36+
[appsec.events.users.login.failure.usr.login] => anon_428821350e9691491f616b754cd8315f
37+
[_dd.appsec.usr.login] => anon_428821350e9691491f616b754cd8315f
38+
[appsec.events.users.login.failure.track] => true
3739
[appsec.events.users.login.failure.usr.exists] => true
40+
[server.business_logic.users.login.failure] => null
3841
)
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
--TEST--
2+
Track automated user login failure with anonymization mode and verify the tags in the root span
3+
--INI--
4+
extension=ddtrace.so
5+
--ENV--
6+
DD_APPSEC_ENABLED=1
7+
DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE=anon
8+
--FILE--
9+
<?php
10+
use function datadog\appsec\testing\root_span_get_meta;
11+
use function datadog\appsec\track_user_login_failure_event_automated;
12+
include __DIR__ . '/inc/ddtrace_version.php';
13+
14+
ddtrace_version_at_least('0.79.0');
15+
16+
track_user_login_failure_event_automated("", "automatedID",
17+
true,
18+
[
19+
"value" => "something",
20+
"metadata" => "some other metadata",
21+
"email" => "[email protected]"
22+
]
23+
);
24+
25+
echo "root_span_get_meta():\n";
26+
print_r(root_span_get_meta());
27+
?>
28+
--EXPECTF--
29+
root_span_get_meta():
30+
Array
31+
(
32+
[runtime-id] => %s
33+
[appsec.events.users.login.failure.usr.id] => anon_b3ddafd7029d645b44fb990eea55b003
34+
[_dd.appsec.usr.id] => anon_b3ddafd7029d645b44fb990eea55b003
35+
[_dd.appsec.events.users.login.failure.auto.mode] => anonymization
36+
[appsec.events.users.login.failure.track] => true
37+
[appsec.events.users.login.failure.usr.exists] => true
38+
[server.business_logic.users.login.failure] => null
39+
)
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
--TEST--
2+
Track automated user login failure with anonymization mode and verify the tags in the root span
3+
--INI--
4+
extension=ddtrace.so
5+
--ENV--
6+
DD_APPSEC_ENABLED=1
7+
DD_APPSEC_AUTO_USER_INSTRUMENTATION_MODE=anon
8+
--FILE--
9+
<?php
10+
use function datadog\appsec\testing\root_span_get_meta;
11+
use function datadog\appsec\track_user_login_failure_event_automated;
12+
include __DIR__ . '/inc/ddtrace_version.php';
13+
14+
ddtrace_version_at_least('0.79.0');
15+
16+
track_user_login_failure_event_automated("login", "",
17+
true,
18+
[
19+
"value" => "something",
20+
"metadata" => "some other metadata",
21+
"email" => "[email protected]"
22+
]
23+
);
24+
25+
echo "root_span_get_meta():\n";
26+
print_r(root_span_get_meta());
27+
?>
28+
--EXPECTF--
29+
root_span_get_meta():
30+
Array
31+
(
32+
[runtime-id] => %s
33+
[_dd.appsec.events.users.login.failure.auto.mode] => anonymization
34+
[appsec.events.users.login.failure.usr.login] => anon_428821350e9691491f616b754cd8315f
35+
[_dd.appsec.usr.login] => anon_428821350e9691491f616b754cd8315f
36+
[appsec.events.users.login.failure.track] => true
37+
[appsec.events.users.login.failure.usr.exists] => true
38+
[server.business_logic.users.login.failure] => null
39+
)

appsec/tests/extension/track_user_login_failure_event_automated_default_mode.phpt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ DD_APPSEC_ENABLED=1
77
--FILE--
88
<?php
99
use function datadog\appsec\testing\root_span_get_meta;
10-
use function datadog\appsec\track_user_login_failure_event;
10+
use function datadog\appsec\track_user_login_failure_event_automated;
1111
include __DIR__ . '/inc/ddtrace_version.php';
1212

1313
ddtrace_version_at_least('0.79.0');
1414

15-
track_user_login_failure_event("1234", true, ['something' => 'discarded'], true);
15+
track_user_login_failure_event_automated("login", "automatedID", true, ['something' => 'discarded']);
1616

1717
echo "root_span_get_meta():\n";
1818
print_r(root_span_get_meta());
@@ -22,8 +22,12 @@ root_span_get_meta():
2222
Array
2323
(
2424
[runtime-id] => %s
25-
[appsec.events.users.login.failure.usr.id] => 1234
26-
[appsec.events.users.login.failure.track] => true
25+
[appsec.events.users.login.failure.usr.id] => automatedID
26+
[_dd.appsec.usr.id] => automatedID
2727
[_dd.appsec.events.users.login.failure.auto.mode] => identification
28+
[appsec.events.users.login.failure.usr.login] => login
29+
[_dd.appsec.usr.login] => login
30+
[appsec.events.users.login.failure.track] => true
2831
[appsec.events.users.login.failure.usr.exists] => true
32+
[server.business_logic.users.login.failure] => null
2933
)

appsec/tests/extension/track_user_login_failure_event_automated_disabled_config.phpt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@ DD_APPSEC_AUTOMATED_USER_EVENTS_TRACKING_ENABLED=0
99
--FILE--
1010
<?php
1111
use function datadog\appsec\testing\root_span_get_meta;
12-
use function datadog\appsec\track_user_login_failure_event;
12+
use function datadog\appsec\track_user_login_failure_event_automated;
1313
include __DIR__ . '/inc/ddtrace_version.php';
1414

1515
ddtrace_version_at_least('0.79.0');
1616

17-
track_user_login_failure_event("Admin", true,
17+
track_user_login_failure_event_automated("login", "automatedID", true,
1818
[
1919
"value" => "something",
2020
"metadata" => "some other metadata",
2121
"email" => "[email protected]"
22-
], true);
22+
]);
2323

2424
echo "root_span_get_meta():\n";
2525
print_r(root_span_get_meta());

0 commit comments

Comments
 (0)