AsIs
自分が何をしているのかを本当に理解していない限り、安全ではありません。たとえば、ユニットテストに使用できます。
SQLクエリを事前にフォーマットしない限り、パラメータを渡すことはそれほど安全ではありません。絶対にしないでください:
sql_query = 'SELECT * FROM {}'.format(user_input)
cur.execute(sql_query)
user_input
以降 ';DROP DATABASE;'
の可能性があります たとえば。
代わりに、次のことを行ってください:
sql_query = 'SELECT * FROM %s'
cur.execute(sql_query, (user_input,))
pyscopg2
クエリをサニタイズします。また、ユーザーの入力を本当に信頼していない場合は、独自のロジックを使用してコード内のパラメーターを事前にサニタイズすることができます。
また、どのテーブルをクエリする必要があるかをユーザーに教えてもらうことは決してありません。アプリのロジック(またはルート)がそれを教えてくれるはずです。
AsIs()
について 、 psycopg2
による のドキュメント
:
したがって、ユーザーの入力と一緒に使用しないでください。