摘要:Flask anti CSRF
最近写了几个Web页面,Python框架一般是可以天生防止Xss和Mysql injection,但是CSRF则需要自己手工实现防止。
下面是自己测试的一个用于防止CSRF的案例(flask框架):
from flask import Flask,request,render_template,session from random import Random app = Flask(__name__) app.debug = True app.secret_key = "test" def random_str(randomlength=8): str = '' chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789' length = len(chars) - 1 random = Random() for i in range(randomlength): str+=chars[random.randint(0, length)] return str def generate_csrf_token(): if '_csrf_token' not in session: session['_csrf_token'] = random_str() return session['_csrf_token'] @app.before_request def csrf_protect(): if request.method == "POST": token = session.pop('_csrf_token', None) if not token or token != request.form.get('_csrf_token'): abort(403) app.jinja_env.globals['csrf_token'] = generate_csrf_token() @app.route("/") def hello(): return render_template("index.html") if __name__ == "__main__": app.run()
------------------------------
文章的授權使用CC BY-ND2.5協議。凡是標示“轉載”的文章,均來源於網絡並儘可能標註作者。如果有侵犯您的權益,請及時聯繫刪除或者署名、授權。
Gtalk/Email: cmd4shell [at] gmail.com