check_resource_allowed treats /api/../admin as under /api
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
研究方向
從 auth_utils.py 中的 check_resource_allowed 開始,檢查 tests/shared/test_auth_utils.py 中現有的路徑邊界案例。為點段、百分比編碼的點段,以及仍位於已設定前綴下的路徑新增涵蓋範圍,然後執行相關的 auth utility 測試。完成標準是:超出已設定前綴的路徑不匹配,而仍位於其下的正規化路徑仍然匹配。
由索引模型根據 Issue 內容生成。
描述
What happened
check_resource_allowed pads trailing slashes and then does requested_path.startswith(configured_path). It does not collapse . / ...
On main @ 08a3bc8 these return True:
- requested
https://example.com/api/../adminvs configuredhttps://example.com/api - requested
https://example.com/mcp/..vs configuredhttps://example.com/mcp - requested
https://example.com/api/%2e%2e/adminvs configuredhttps://example.com/api
tests/shared/test_auth_utils.py already rejects /api123 vs /api (path-boundary). Dot-segments are not covered.
What I expected
A requested path that walks out of the configured prefix should not match. /api/foo/../v1 vs /api can still match after normalisation, because it stays under /api.
How to reproduce
from mcp.shared.auth_utils import check_resource_allowed
check_resource_allowed("https://example.com/api/../admin", "https://example.com/api")
# True today. I expected False.
I can send a PR that percent-decodes once, runs posixpath.normpath, then keeps the existing trailing-slash prefix rule. Happy to do that if you want it.
Written with AI assistance. I read auth_utils.py next to the path-boundary tests and reproduced it locally.
- 主要語言
- Python
- 星號
- 24.3k
- 分支
- 4k
- 平均合併
- 1 天 16 小時
- 30 天內合併 PR
- 25
環境準備
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
modelcontextprotocol/python-sdk 的其他 Issue
-
v1 v2
難度 2/5 1-3 小時 新手友好度 70/100
modelcontextprotocol/python-sdk#3578 · 1 則留言 ·
維護者通常 1 天內回覆
-
v1 v2
難度 2/5 1-3 小時 新手友好度 65/100
modelcontextprotocol/python-sdk#3573 · 2 則留言 ·
維護者通常 1 天內回覆
-
v2
難度 2/5 1-3 小時 新手友好度 75/100
modelcontextprotocol/python-sdk#3566 ·
維護者通常 1 天內回覆
-
v1 v2
難度 2/5 1-3 小時 新手友好度 85/100
modelcontextprotocol/python-sdk#3546 · 5 則留言 ·
維護者通常 1 天內回覆
-
v1 v2
難度 2/5 1-3 小時 新手友好度 76/100
modelcontextprotocol/python-sdk#3545 · 2 則留言 ·
維護者通常 1 天內回覆
查看 modelcontextprotocol/python-sdk 的全部 Issue
相似的 Issue
-
good first issue
難度 2/5 1-3 小時 新手友好度 88/100
-
難度 2/5 1-3 小時 新手友好度 88/100
vllm-project/vllm-metal#822 ·
維護者通常 1 天內回覆
-
vector-store
難度 1/5 1-3 小時 新手友好度 90/100
維護者通常 1 天內回覆
-
[Bug]: chunk_span_bounds and _validated_chunk_spans reject Pydantic models ChunkSpan and AudioFile未關閉
難度 2/5 1-3 小時 新手友好度 78/100
BasedHardware/omi#19047 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 88/100
維護者通常 1 天內回覆