Flask - Security Best PracticesWhich of the following is the correct way to use parameterized queries with Flask's database cursor?Acursor.execute(f"SELECT * FROM users WHERE id = {user_id}")Bcursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))Ccursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))Dcursor.execute("SELECT * FROM users WHERE id = :id", user_id)Check Answer
Step-by-Step SolutionSolution:Step 1: Identify correct placeholder syntaxIn Flask with many DB adapters like psycopg2, %s is used as placeholder for parameters.Step 2: Check parameter passing formatParameters must be passed as a tuple, e.g., (user_id,). cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,)) uses %s and tuple correctly.Final Answer:cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,)) -> Option CQuick Check:Use %s with tuple for parameters [OK]Quick Trick: Use %s and tuple for parameters in execute() [OK]Common Mistakes:MISTAKESUsing f-strings directly with user inputUsing ? placeholder which is for SQLite, not psycopg2Passing parameters incorrectly without tuple
Master "Security Best Practices" in Flask9 interactive learning modes - each teaches the same concept differentlyLearnWhyDeepVisualTryChallengeProjectRecallPerf
More Flask Quizzes Deployment - Logging in production - Quiz 3easy Deployment - Logging in production - Quiz 2easy Flask Ecosystem and Patterns - Flask vs Django decision - Quiz 2easy Flask Ecosystem and Patterns - Migrating to async Flask - Quiz 9hard Flask Ecosystem and Patterns - Command pattern with Flask CLI - Quiz 7medium Middleware and Extensions - Why middleware extends functionality - Quiz 9hard Middleware and Extensions - Before_request as middleware alternative - Quiz 3easy Performance Optimization - Profiling Flask applications - Quiz 13medium Security Best Practices - Password storage best practices - Quiz 1easy Testing Flask Applications - Testing with database - Quiz 5medium