1、Django 的生命周期?
- 前端发起请求
- nginx
- uwsgi
- 中间件
- URL
- view视图
- 通过orm与model层进行数据交互
- 拿到数据返回给view
- 试图将数据渲染到模板中拿到字符串
- 中间件
- uwsgi
- nginx
- 前端渲染
2、中间件的五种方法?
- process_request
- process_response
- Process_view
- Process_exception
- Process_render_template
3、django 自带的中间件?
- SecurityMiddleware
- SessionMiddleware
- CommmonMiddleware
- CsrfViewMiddleware
- AuthenticationMiddleware
- MessageMiddleware
- XFrameOptionMiddleware
4、csrf 攻击、危害与防御
csrf 攻击全称为Cross-site request forgery 中文名称 跨站请求伪造 也被称为“One Click Attack”或者“Session Riding”,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
XSS主要是利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求,来利用受信任的网站。与XSS相比,CSRF更具危险性。
主要的危害来自于攻击者盗用用户身份,发送恶意请求。比如:模拟用户发送邮件,发消息,以及支付、转账等。
如何防御CSRF攻击?
- 1、重要数据交互采用POST进行接收,当然POST也不是万能的,伪造一个form表单即可破解。
- 2、使用验证码,只要是涉及到数据交互就先进行验证码验证,这个方法可以完全解决CSRF。
- 3、出于用户体验考虑,网站不能给所有的操作都加上验证码,因此验证码只能作为一种辅助手段,不能作为主要解决方案。
- 4、验证HTTP Referer字段,该字段记录了此次HTTP请求的来源地址,最常见的应用是图片防盗链。
- 5、为每个表单添加令牌token并验证。