如何解决如何在没有wtforms的情况下将CSRF添加到flask应用程序?
我有一个简单的网络应用, 而且我想添加csrf保护。但是我不理解Flask-WTF提供的csrf包装器。我已经看过文档了。但是仍然不知道它是如何工作的。
我的问题是:
(1)包装完应用程序后,我是否需要从路线上处理它?还是烧瓶帮我解决这个问题?
(2)如果不是我自己该如何处理? (请提供示例)。
app.py:
from flask import Flask,render_template
from flask_wtf.csrf import CSRFProtect
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
csrf = CSRFProtect(app)
@app.route('/',methods=['GET'])
def get_home():
"""Get home template"""
return render_template('home.html')
@app.route('/',methods=['POST'])
def post_home():
"""Handle posted data and do stuff"""
return
home.html(窗体):
<form action="#" method="post">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
<input type="text" placeholder="Name">
<button type="submit">
Submit
</button>
</form>
解决方法
默认情况下,您无需担心自己进行验证-您只需正常处理POST请求的其他字段即可。如果您在这里查看d
类的StringBuilder
函数中的函数public static String encrypt(String word,int shift) {
StringBuilder sb = new StringBuilder();
for (char c : word.toCharArray()) {
char ch = (char)((Character.toLowerCase(c)-'a' + shift)%26+'a');
if (Character.isUpperCase(c)) {
ch = Character.toUpperCase(ch);
}
sb.append(ch);
}
return sb.toString();
}
(第202-225行,https://github.com/lepture/flask-wtf/blob/master/flask_wtf/csrf.py行),则可以查看将停止运行的内容。 csrf_protect()
函数在给定请求之前运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。