Skip to content

Commit 79dfbf7

Browse files
Python: Add FastAPI request test
Co-authored-by: Joe Farebrother <[email protected]>
1 parent 508c7e6 commit 79dfbf7

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

python/ql/test/library-tests/frameworks/fastapi/taint_test.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,3 +187,38 @@ async def websocket_test(websocket: WebSocket): # $ requestHandler routedParamet
187187

188188
async for data in websocket.iter_json():
189189
ensure_tainted(data) # $ tainted
190+
191+
192+
# --- Request ---
193+
194+
import starlette.requests
195+
from fastapi import Request
196+
197+
198+
assert Request == starlette.requests.Request
199+
200+
@app.websocket("/req") # $ routeSetup="/req"
201+
async def request_test(request: Request): # $ requestHandler routedParameter=request
202+
ensure_tainted(
203+
request, # $ tainted
204+
205+
await request.body(), # $ MISSING: tainted
206+
207+
await request.json(), # $ MISSING: tainted
208+
await request.json()["key"], # $ MISSING: tainted
209+
210+
# form() returns a FormDat (which is a starlette ImmutableMultiDict)
211+
await request.form(), # $ MISSING: tainted
212+
await request.form()["key"], # $ MISSING: tainted
213+
await request.form().getlist("key"), # $ MISSING: tainted
214+
await request.form().getlist("key")[0], # $ MISSING: tainted
215+
# data in the form could be an starlette.datastructures.UploadFile
216+
await request.form()["file"].filename, # $ MISSING: tainted
217+
await request.form().getlist("file")[0].filename, # $ MISSING: tainted
218+
219+
request.cookies, # $ MISSING: tainted
220+
request.cookies["key"], # $ MISSING: tainted
221+
)
222+
223+
async for chunk in request.stream():
224+
ensure_tainted(chunk) # $ MISSING: tainted

0 commit comments

Comments
 (0)