Skip to content

Commit d8f910f

Browse files
mistercrunchclaude
andcommitted
fix(security): Return 404 for dashboard access denial to prevent information leakage
- Dashboard access denial now returns 404 instead of redirecting - Prevents attackers from enumerating which dashboards exist - Updated tests to expect 404 instead of 302 for access denial - 18 of 20 RBAC tests now pass (2 have teardown issues) Co-Authored-By: Claude <[email protected]>
1 parent 5df2bb3 commit d8f910f

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

tests/integration_tests/dashboards/security/security_rbac_tests.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def test_get_dashboard_view__user_can_not_access_without_permission(self):
108108

109109
# act
110110
response = self.get_dashboard_view_response(dashboard_to_access)
111-
assert response.status_code == 302
111+
assert response.status_code == 404
112112

113113
request_payload = get_query_context("birth_names")
114114
rv = self.post_assert_metric(CHART_DATA_URI, request_payload, "data")
@@ -129,7 +129,7 @@ def test_get_dashboard_view__user_with_dashboard_permission_can_not_access_draft
129129
response = self.get_dashboard_view_response(dashboard_to_access)
130130

131131
# assert
132-
assert response.status_code == 302
132+
assert response.status_code == 404
133133

134134
# post
135135
revoke_access_to_dashboard(dashboard_to_access, new_role) # noqa: F405
@@ -147,9 +147,9 @@ def test_get_dashboard_view__user_no_access_regular_rbac(self):
147147
dashboard = create_dashboard_to_db(published=True, slices=[slice])
148148
self.login(GAMMA_USERNAME)
149149

150-
# assert redirect on regular rbac access denied
150+
# assert 404 on regular rbac access denied (prevents information leakage)
151151
response = self.get_dashboard_view_response(dashboard)
152-
assert response.status_code == 302
152+
assert response.status_code == 404
153153

154154
request_payload = get_query_context("birth_names")
155155
rv = self.post_assert_metric(CHART_DATA_URI, request_payload, "data")
@@ -221,7 +221,7 @@ def test_get_dashboard_view__public_user_can_not_access_without_permission(self)
221221
response = self.get_dashboard_view_response(dashboard_to_access)
222222

223223
# assert
224-
assert response.status_code == 302
224+
assert response.status_code == 404
225225

226226
@pytest.mark.usefixtures("public_role_like_gamma")
227227
def test_get_dashboard_view__public_user_with_dashboard_permission_can_not_access_draft( # noqa: E501
@@ -234,7 +234,7 @@ def test_get_dashboard_view__public_user_with_dashboard_permission_can_not_acces
234234
response = self.get_dashboard_view_response(dashboard_to_access)
235235

236236
# assert
237-
assert response.status_code == 302
237+
assert response.status_code == 404
238238

239239
# post
240240
revoke_access_to_dashboard(dashboard_to_access, "Public") # noqa: F405

0 commit comments

Comments
 (0)