Csrf_token ||| CSRF跨站请求伪造
# 注: 部分内容参考网上,侵删
CSRF(Cross-site request forgery) 跨站请求伪造,是一种对网站的恶意利用 它会通过伪装成受信任用户的请求来利用受信任的网站来获取一些信息。
举个小栗子来解释原理(故事纯属虚构):
A用户在某个银行有一笔不小的存款,A用户可以通过该银行的网站来进行存款和提现等请求,当请求发送到网站后,服务器会先验证该请求是否来自一个合法的 session,并且保存。 当黑客B发现了该目标用户A之后,黑客B便在该银行网站注册账户。黑客B可以通过A用户的某个URL来进行转账。但是,该URL的请求来自黑客B但并非来自用户A,所以无法通过验证。 这时,黑客B便可以自己创建一个网站,该网站的部分请求中会有A用户的转账的URL,黑客B的网站里面有许多诱人的东西,来诱惑用户A来访问该网站。 如果用户A刚刚在该银行网站上进行过转账等操作,便被黑客B的网站诱惑到,以至于来访问该黑客网站,这个时候用户A的浏览器与银行网站之间的 session 尚未过期,浏览器的 cookie 之中含有 用户A 的认证信息。这时,悲剧发生了,这个 url 请求就会得到响应,钱将从 用户A 的账号转移到 黑客B的账号,而 用户A 当时毫不知情,还在很开心的访问着黑客B的黑网站。
CSRF攻击之所以能够成功,是因为黑客可以伪造用户的请求,请求的信息都是存在cookie或session中的。 要想抵御CSRF,关键在于在一些重要请求中放入一些黑客不能伪造的信息。
抵御CSRF有三种方法:
1.验证码
2.refer头
3.Token
我们便来说说第三中方法Csrf_token
Token就是一个令牌,他是一个随机的值,Token最大的特点就是随机性,不可预测
他可以在请求的时候随机产生一个令牌,并在服务器上建立一个拦截器来验证该令牌,如果两者不匹配或者没存在令牌,便会拒绝该请求。
注意当然不能写到cookie中,因为浏览器在发出恶意csrf请求时,是自动带着你的cookie的
运用的时候在form表单中需要加上 
并且在用的时候也需要获取一下该token

温馨提示:
在生活中,一定要注意网上的一些垃圾信息,和一些不健康网站。在我们刚刚在某网站转账完毕或者登陆完毕之后,就不要去访问内些垃圾网站,防止我们的信息被盗取。
Csrf_token ||| CSRF跨站请求伪造的更多相关文章
- python CSRF跨站请求伪造
python CSRF跨站请求伪造 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- Django之CSRF跨站请求伪造(老掉牙的钓鱼网站模拟)
首先这是一个测试的代码 请先在setting页面进行下面操作 注释完成后,开始模拟钓鱼网站的跨站请求伪造操作: 前端代码: <!DOCTYPE html> <html lang=&q ...
- ajax向Django前后端提交请求和CSRF跨站请求伪造
1.ajax登录示例 urls.py from django.conf.urls import url from django.contrib import admin from app01 impo ...
- python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)
一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 from app01 import views urlpatterns = [ path('admin/', admi ...
- 第三百一十五节,Django框架,CSRF跨站请求伪造
第三百一十五节,Django框架,CSRF跨站请求伪造 全局CSRF 如果要启用防止CSRF跨站请求伪造,就需要在中间件开启CSRF #中间件 MIDDLEWARE = [ 'django.midd ...
- Django中的CSRF(跨站请求伪造)
Django中的CSRF(跨站请求伪造) Django CSRF 什么是CSFR 即跨站请求伪装,就是通常所说的钓鱼网站. 钓鱼网站的页面和正经网站的页面对浏览器来说有什么区别? (页面是怎么来的? ...
- Django框架 之 基于Ajax中csrf跨站请求伪造
Django框架 之 基于Ajax中csrf跨站请求伪造 ajax中csrf跨站请求伪造 方式一 1 2 3 $.ajaxSetup({ data: {csrfmiddlewaretoken: ...
- 十三 Django框架,CSRF跨站请求伪造
全局CSRF 如果要启用防止CSRF跨站请求伪造,就需要在中间件开启CSRF #中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMidd ...
- Web框架之Django_09 重要组件(Django中间件、csrf跨站请求伪造)
摘要 Django中间件 csrf跨站请求伪造 一.Django中间件: 什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于 ...
随机推荐
- istio-mix介绍
mixer 概念 Mixer 是负责提供策略控制和遥测收集的 Istio 组件: 在每次请求执行先决条件检查之前以及在每次报告遥测请求之后,Envoy sidecar 在逻辑上调用 Mixer. 主要 ...
- 菜鸟脱壳之脱壳的基础知识(六)——手动查找IAT和修复Dump的程序
前面讲了如何寻找OEP和脱壳,有的时候,Dump出来的时候不能正常运行,是因为还有一个输入表没有进行处理,一些加密壳会在IAT加密上面大做文章,用HOOK - API的外壳地址来代替真是的IAT的地址 ...
- javascript高级程序设计第3版——第1Java章 DOM扩展
虽然DOM 为与XML 及HTML 文档交互制定了一系列核心API,但仍然有几个规范对标准的DOM进行了扩展.这些扩展中有很多原来是浏览器专有的,但后来成为了事实标准,于是其他浏览器也都提供了相同的实 ...
- C# 获取Newtonsoft.Json的JObject多层节点内容
json形如 { "object":{ "name":"cwr" }, " } 要获取name的值,则需要构造两个JObject来 ...
- redis 持久化共享 Session
https://docs.microsoft.com/zh-cn/azure/redis-cache/cache-aspnet-session-state-provider
- 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询。这些是所有 Oracle 开发者都必备的技能,所以快快收藏吧!
日期/时间 相关查询 获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天.你可以用任何的日期值替换 “SYSDATE”来指定查询的日期. SELECT TRUNC (SYSDATE, 'MO ...
- 颜色表 及 p em fr
#000000 #2F0000 #600030 #460046 #28004D #272727 #4D0000 #820041 #5E005E #3A006F ...
- CSS3-1
css3 1 学习前置条件:html + css2 2 概述 *历史 css3 就是层叠样式表的目前的最高版本,带来了许多新特性.如,圆角.渐变.过渡.动画.新布局(多列布局缩进盒子等) // c ...
- openssl 检测链路完整
D:\openssl\bin>openssl s_client -connect www.xxxx.com:443
- python基础--字典
Python基础--字典 字典的常用函数: dict.clear( )--->无任何返回值 说明: 清除字典内的所有的元素 语法: In [5]: dict.clear? Type: metho ...