WTForms 防止 StringField 和 TextAreaField 中的有害输入

问题描述 投票:0回答:0

我希望使用 WTForms 清理用户输入的文本。我关心的是防止用户在我的 TextAreaField 和 StringField 中输入有害文本(SQL 注入或 Javascript 注入)。我仍然希望允许用户输入特殊字符(如

&
"
.
等),只是不要做任何恶意的事情。如何防止有害输入?我找到了一些为此使用 Regex 的答案,但这感觉很糟糕,还有另一种方法吗?我当前的代码是:

from flask_wtf import FlaskForm
from wtforms import StringField, TextAreaField
from wtforms.validators import DataRequired

class CampForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    notes = TextAreaField('Notes', validators=[DataRequired()])

在我看来:

from app import db
from app.models import Camp
from app.camps.forms import CampForm

@camps.route('add_camp', methods = ['GET', 'POST'])
def create_camp():
    form = CampForm()
    if form.validate_on_submit():
        camp = Camp(name=form.name.data,
                    notes=form.notes.data)
        db.session.add(camp)
        db.session.commit()

然后是我使用 Jinja 模板向用户显示此信息的部分:

<div>
  <p>{{camp.name}}</p>
  <p>{{camp.notes}}</p>
</div>

如何防止用户在这两个字段中输入有害文本?

python flask flask-wtforms wtforms
© www.soinside.com 2019 - 2024. All rights reserved.