File tree Expand file tree Collapse file tree 1 file changed +21
-2
lines changed
Expand file tree Collapse file tree 1 file changed +21
-2
lines changed Original file line number Diff line number Diff line change 88def execute_unsafe_query (query : str ):
99 conn = sqlite3 .connect ("test.db" )
1010 cursor = conn .cursor ()
11- cursor .execute (query ) # ✅ Uses parameterized query
11+ cursor .execute (query ) #unsafe with user input
1212 result = cursor .fetchall ()
1313 conn .commit ()
1414 conn .close ()
1515 return result
1616
17+ def better_query (query : str , params ):
18+ conn = sqlite3 .connect ("test.db" )
19+ cursor = conn .cursor ()
20+ cursor .execute (query , params ) #safe to execute with user input
21+ result = cursor .fetchall ()
22+ conn .commit ()
23+ conn .close ()
24+ return result
25+
26+
1727@app .get ("/unsafe_query/" )
1828def unsafe_query (user_input : str ):
29+ #f-string case
30+ #<expect-error>
1931 query = f"SELECT * FROM users WHERE name = { user_input } "
32+ #binary operator case
33+ #<expect-error>
2034 query2 = "SELECT * FROM users WHERE name =" + user_input
35+ #should not identify this as an error
36+ query3 = "SELECT * FROM user WHERE name= ?"
2137 result = execute_unsafe_query (query )
2238 result2 = execute_unsafe_query (query = query2 )
23- return {"result" : result , "result2" : result2 }
39+
40+ result3 = better_query (query = query3 , params = (user_input ,))
41+
42+ return {"result" : result , "result2" : result2 , "result3" : result3 }
You can’t perform that action at this time.
0 commit comments