2012-01-30 9 views
5

Flask、WTForms、およびOurSQL MySQLライブラリを使用しています。私はrequest.form変数から投稿データを受け取ります。私はそれをWTFormsフォームオブジェクトに入れました。そのフォームにvalidate()と呼んで、OurSQLを使用してフォームデータをMySQLデータベースに挿入します。Flaskで投稿データを受け取った場合、そのデータをWTFormsフォームに入れ、SQLインジェクション攻撃から安全かどうかを検証します。

追加の処理を行うことなく、SQLインジェクションから安全ですか? WTForms validateメソッドはエスケープしますか?そうでない場合は、データをエスケープするために何をすべきですか?私の知る限りでは、どちらもWTFormsやフラスコがSQLのデータをエスケープ

form = MyWTFFormsForm(request.form) 
if form.validate(): 
    cursor.execute("INSERT INTO mytable VALUES (?, ?, ?, ?, ?);", 
      (form.field1.data, form.field2.data, form.field3.data, 
      form.field4.data, 
      form.field5.data)) 

答えて

5

が、あなたはそこにやっているように、プレースホルダを使用してエスケープする必要がなくなり:。私はこのようなルックスをやっているものの例

2

フォーム検証とSQLは別の問題です。フォーム検証の仕事は、データが合理的であることを確認することです。 SQLコードの仕事は、データを安全に保管することです。 SQLインジェクション攻撃は、基本的にSQL関連のコードに対する攻撃です。 cursor.execute?プレースホルダを使用して提供したスニペットは、データをSQLに送信する前に適切な引用を行い、SQLインジェクションの可能性はありません。

関連する問題