Python 如果我使用Flask接收post数据,将该数据放入WTForms表单并成功验证,那么它是否安全,不会受到SQL注入攻击?

Python 如果我使用Flask接收post数据,将该数据放入WTForms表单并成功验证,那么它是否安全,不会受到SQL注入攻击?,python,mysql,sql-injection,flask,wtforms,Python,Mysql,Sql Injection,Flask,Wtforms,我正在为我的应用程序使用Flask、WTForms和OurSQL MySQL库。我从request.form变量接收post数据。我把它放到一个WTForms对象中。我在该表单上调用validate(),然后使用我们的SQL将表单数据插入MySQL数据库 如果不做任何额外的处理,我是否可以避免SQL注入?WTForms验证方法是否执行转义?如果没有,我应该做什么来转义数据?我正在做的一个例子如下所示: form = MyWTFFormsForm(request.form) if form.val

我正在为我的应用程序使用Flask、WTForms和OurSQL MySQL库。我从
request.form
变量接收post数据。我把它放到一个WTForms对象中。我在该表单上调用
validate()
,然后使用我们的SQL将表单数据插入MySQL数据库

如果不做任何额外的处理,我是否可以避免SQL注入?WTForms
验证方法是否执行转义?如果没有,我应该做什么来转义数据?我正在做的一个例子如下所示:

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))

据我所知,WTForms和Flask都没有为SQL转义数据,但是使用占位符(如您在那里所做的)消除了转义的需要。

表单验证和SQL是两个独立的问题。表单验证的工作是确保数据有意义。SQL代码的任务是安全地存储数据。SQL注入攻击基本上是对SQL相关代码的攻击。使用
游标.execute
占位符提供的代码段将在将数据发送到SQL之前进行正确的引用,因此不可能进行SQL注入