You've already forked adk-python
mirror of
https://github.com/encounter/adk-python.git
synced 2026-03-30 10:57:20 -07:00
fix: scenario where a user can access another users events given the same session id
test: refine test_session_state in test_session_state to catch event leakage fix: revert app name to my_app for test_session_state test style: fix pyink style warnings fix: add app_name to filter as per suggestion from rpedela-recurly
This commit is contained in:
committed by
Sindri Snær Gunnarsson
parent
0bd05df471
commit
362fb3f2b7
@@ -459,7 +459,9 @@ class DatabaseSessionService(BaseSessionService):
|
||||
|
||||
storage_events = (
|
||||
session_factory.query(StorageEvent)
|
||||
.filter(StorageEvent.app_name == app_name)
|
||||
.filter(StorageEvent.session_id == storage_session.id)
|
||||
.filter(StorageEvent.user_id == user_id)
|
||||
.filter(timestamp_filter)
|
||||
.order_by(StorageEvent.timestamp.desc())
|
||||
.limit(
|
||||
|
||||
@@ -126,6 +126,7 @@ async def test_session_state(service_type):
|
||||
app_name = 'my_app'
|
||||
user_id_1 = 'user1'
|
||||
user_id_2 = 'user2'
|
||||
user_id_malicious = 'malicious'
|
||||
session_id_11 = 'session11'
|
||||
session_id_12 = 'session12'
|
||||
session_id_2 = 'session2'
|
||||
@@ -148,6 +149,10 @@ async def test_session_state(service_type):
|
||||
app_name=app_name, user_id=user_id_2, session_id=session_id_2
|
||||
)
|
||||
|
||||
await session_service.create_session(
|
||||
app_name=app_name, user_id=user_id_malicious, session_id=session_id_11
|
||||
)
|
||||
|
||||
assert session_11.state.get('key11') == 'value11'
|
||||
|
||||
event = Event(
|
||||
@@ -196,6 +201,13 @@ async def test_session_state(service_type):
|
||||
assert session_11.state.get('user:key1') == 'value1'
|
||||
assert not session_11.state.get('temp:key')
|
||||
|
||||
# Make sure a malicious user can obtain a session and events not belonging to them
|
||||
session_mismatch = await session_service.get_session(
|
||||
app_name=app_name, user_id=user_id_malicious, session_id=session_id_11
|
||||
)
|
||||
|
||||
assert len(session_mismatch.events) == 0
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.parametrize(
|
||||
|
||||
Reference in New Issue
Block a user