Scan request validation gaps: empty ScanFilter in the parameter mix, empty AttributesToGet, legacy and ExclusiveStartKey numbers, ExpressionAttributeValues nesting depth
Maintainer thường phản hồi trong vòng 2 ngày
@LeeroyHannigan đang làm issue này rồi.
Từ ngày 25/10/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
Observed on the service
Measured against DynamoDB (us-east-1) on 2026-10-25 at 10:38 and 10:55 UTC, each request sent twice, raw signed HTTP Scan on an existing table of 29 items.
- An empty
ScanFiltercounts as present for the expression and non-expression parameter mix.ScanFilter: {}withFilterExpression: "a = :n"answersValidationException: Can not use both expression and non-expression parameters in the same request: Non-expression parameters: {ScanFilter} Expression parameters: {FilterExpression}.ScanFilter: {}alone is accepted (200, Count 29);ScanFilter: {}with an unused{"N": "bob"}answers the number text. - An empty
AttributesToGetis refused by a length constraint ahead of the number check.AttributesToGet: []alone, with aFilterExpression, or with aFilterExpressionand a{"N": "bob"}value, answers1 validation error detected: Value at 'AttributesToGet' failed to satisfy constraint: Member must have length greater than or equal to 1. - A malformed
Nin a legacyScanFilterAttributeValueListanswersThe parameter cannot be converted to a numeric value: bob. - A malformed
NinExclusiveStartKey(with a valid filter) answersThe parameter cannot be converted to a numeric value: bob. ExpressionAttributeValuesnesting depth. AnLnested 32 or deeper with a validNat the bottom, unused, answersNesting Levels have exceeded supported limits: Attributes in the item have nested levels beyond supported limit(depths 32, 33, 40 and 60 measured); 31 levels answers the unused-value text. With{"N": "bob"}at the bottom, depths 31 to 60 and anMat 32 answer the number text: the number check runs before the nesting check. At 100 levels the service answersExpressionAttributeValues contains invalid value: Nesting Levels have exceeded supported limits: Attributes in the item have nested levels beyond supported limit for key :d.
Observed on ExtendDB
At the head of the Scan number check branch, and on main except where main has no number check on Scan (item 2):
ScanFilter: {}with aFilterExpressionis accepted (200, the filter runs).AttributesToGet: []is accepted (200), with or without aProjectionExpressionor a number fault; with a{"N": "bob"}value the number text is reported instead of the length constraint.ScanFilterwith{"N": "bob"}in anAttributeValueListis accepted (200, Count 0).ExclusiveStartKeywith{"N": "bob"}on an S key answersThe provided starting key is invalid: The provided key element does not match the schema.- No nesting depth check on Scan or Query: a 32 level
Lwith a valid number answers the unused-value text or scans; at 100 levels the JSON parser's limit answersSerializationException: ... recursion limit exceeded.PutItem,UpdateItemandDeleteItemcallvalidate_attribute_values_nesting_depth;scan.rsandquery.rsdo not.
Proposed change
In the Scan request-time checks: count an object ScanFilter as present whether or not it is empty; refuse AttributesToGet: [] with the length constraint text, ahead of the number check; run the number check over the legacy AttributeValueList values and the ExclusiveStartKey values; and call the nesting depth check on ExpressionAttributeValues after the number check, with the bare text for depths the parser accepts. The same AttributesToGet and QueryFilter questions apply to Query and should be measured there before they are encoded.
- Ngôn ngữ chính
- Rust
- Star
- 517
- Fork
- 60
- Merge trung bình
- 2 ngày 23 giờ
- Pull request đã merge (30 ngày)
- 25
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của ExtendDB/extenddb
-
backend:mongodb bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
Maintainer thường phản hồi trong vòng 2 ngày
-
backend:cassandra bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 2 ngày
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 2 ngày
-
backend:cassandra bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 2 ngày
-
[storage.cassandra] accepts unknown keys silentlyCó thể đã có người làm @LeeroyHannigan đã nhận 1 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
ExtendDB/extenddb#540 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của ExtendDB/extenddb
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 83/100
manuscript-lang/manuscript#1629 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
autofixer: follow-up
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
tursodatabase/turso#10885 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
🐞 bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
nannou-org/gantz#475 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày