购物商城排名,深圳宝安seo,搜索引擎优化是指什么意思,Wordpress网站防止采集在flask当中#xff0c;flask-wtf模块时携带csrf校验的#xff0c;只是需要开启#xff1b; 如果不开启校验就不需要校验#xff0c;但是那样不安全。 Csrf是针对与post请求的跨域限制#xff0c;get请求没有作用 csrf_token的开启
在flask中开启csrf保护
from flask_…在flask当中flask-wtf模块时携带csrf校验的只是需要开启 如果不开启校验就不需要校验但是那样不安全。 Csrf是针对与post请求的跨域限制get请求没有作用 csrf_token的开启
在flask中开启csrf保护
from flask_wtf.csrf import CsrfProtect
CsrfProtect(app)csrf也支持惰性加载
from flask_wtf.csrf import CsrfProtectcsrf CsrfProtect()def create_app():app Flask(__name__)csrf.init_app(app)注意: csrf保护需要app设置盐 app.config[SECRET_KEY]
使用表单提交请求添加验证方法:
在表单中添加csrf验证
方式一:
form methodpost action{{ form.csrf_token }}
/form
方式二:(推荐)
form methodpost action/input typehidden namecsrf_token value{{ csrf_token() }} /
/formcsrf不通过会返回400响应
你可以自定义返回的页面
csrf.error_handler
def csrf_error(reason):return render_template(csrf_error.html, reasonreason), 400如果你想要某些路由不进行csrf验证,使用csrf.exempt放弃验证
csrf.exempt
app.route(/foo, methods(GET, POST))
def my_handler():# ...return ok使用ajax提交请求
方法一:
# 首先在html文件里面的head标签里面添加meta标签
meta namecsrf-token content{{ csrf_token() }}
# 然后在script里面使用jquery获取
script typetext/javascript
var csrftoken $(meta[namecsrf-token]).attr(content)
$.ajaxSetup({beforeSend: function(xhr, settings) {if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) !this.crossDomain) {xhr.setRequestHeader(X-CSRFToken, csrftoken)}}
})
/script方法二:
script typetext/javascript
var csrftoken {{ csrf_token() }}$.ajaxSetup({beforeSend: function(xhr, settings) {if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) !this.crossDomain) {xhr.setRequestHeader(X-CSRFToken, csrftoken)}}
})
/script 1、首先在配置文件中开启CSRFProtect 2、视图中实例化forms类 3、前端使用csrf_token 4、非flask自创的form表单即前端的form表单使用csrf_token的方式 切记要在后面加括号 5、ajax的post请求中使用csrf_token 6、csrf.exempt单个视图免除csrf_token校验