当前位置: 首页 > news >正文

深圳市门户网站建设企业上海医疗旅游开发网站建设

深圳市门户网站建设企业,上海医疗旅游开发网站建设,高端企业站,网站开发团队简介如何写目录 一、csrf跨站请求伪造详解 二、csrf跨域请求伪造 【1】正常服务端 【2】钓鱼服务端 三、csrf校验 【介绍】 form表单中进行csrf校验#xff1a; 【1】form表单如何校验 【2】ajax如何校验 四、csrf相关装饰器 【1】csrf_protect装饰器#xff1a; 【…目录 一、csrf跨站请求伪造详解         二、csrf跨域请求伪造 【1】正常服务端 【2】钓鱼服务端 三、csrf校验 【介绍】 form表单中进行csrf校验 【1】form表单如何校验 【2】ajax如何校验 四、csrf相关装饰器 【1】csrf_protect装饰器 【2】csrf_exempt装饰器 【3】FBV中使用上述装饰器 【4】CBV中使用上述装饰器 (1)  csrf_protect (2)  csrf_exempt方法 一、csrf跨站请求伪造详解         CSRF(Cross-Site Request Forgery)跨站请求伪造是一种常见的网络攻击方式。攻击者通过诱导受害者访问恶意网站或点击恶意链接 将恶意请求发送到目标网站上利用受害者在目标网站中已登录的身份来执行某些操作从而达到攻击的目的。 举个例子 假设受害者在一家网银网站上登录账户然后继续浏览其他网页。同时攻击者通过电子邮件等方式向受害者发送了一封包含恶意链接的邮件。当受害者点击该链接时潜在的威胁就会变得非常现实。该链接指向一个由攻击者操纵的网站该网站上的恶意代码会自动向网银网站发送一个请求请求转账到攻击者的账户。由于受害者在网银网站中已经登录所以该请求会被认为是合法的这样攻击者就可以成功地进行转账操作。 要保护自己免受CSRF攻击网站开发者可以采取以下措施 使用CSRF令牌 在用户的请求中添加随机生成的令牌并将该令牌保存在用户会话中。每次提交请求时都会验证该令牌以确保请求是合法的。启用SameSite属性 将Cookie的SameSite属性设置为Strict或Lax以限制跨站请求。这可以在一定程度上缓解CSRF攻击。严格验证请求来源 服务器端可以验证请求的来源是否为预期的网站域名例如检查HTTP Referer头部。使用验证码 在敏感操作(如转账、更改密码等)上使用验证码增加用户身份验证的防护。 二、csrf跨域请求伪造 钓鱼网站 搭建一个类似正规网站的页面用户点击网站链接给某个用户打钱打钱的操作确确实实提交给了中国银行的系统用户的钱也确实减少但是唯一不同的是账户打钱的账户不是用户想要打钱的目标账户变成了其他用户内部本质 在钓鱼网站的页面针对对方账户只给用户提供一个没有name属性的普通input框然后在内部隐藏一个已经写好带有name属性的input框如何避免上面的问题 csrf跨域请求伪造校验 网站在给用户返回一个具有提交数据功能的页面的时候会给这个页面加一个唯一标识当这个页面后端发送post请求的时候我们后端会先校验唯一标识 如果成功则正常执行如果唯一标识不符合则拒绝连接(403 forbidden) 【1】正常服务端 前端 h1这是正规的网站/h1form action methodpostp当前账户 : input typetext namestart_user/pp目标账户 : input typetext nameend_user/pp转账金额 : input typetext namemoney/pinput typesubmit /form 后端  def transform_normal(request):if request.method POST:user_start request.POST.get(start_user)user_end request.POST.get(end_user)money request.POST.get(money)return HttpResponse(f当前账户 : {user_start} 向目标用户 : {user_end} 转账了 : {money})return render(request, transform_normal.html) 【2】钓鱼服务端 前端 h1这是钓鱼的网站/h1form actionhttp://127.0.0.1:8000/transform_normal/ methodpostp当前账户 : input typetext namestart_user /pp目标账户 : input typetext/ppinput typetext nameend_user valueHopes styledisplay: none/pp转账金额 : input typetext namemoney/pinput typesubmit /form 后端 def transform_normal(request):if request.method POST:user_start request.POST.get(start_user)user_end request.POST.get(end_user)money request.POST.get(money)return HttpResponse(f当前账户 : {user_start} 向目标用户 : {user_end} 转账了 : {money})return render(request, transform_normal.html) 三、csrf校验 【介绍】 csrf校验是一种用于防止跨站请求伪造(Cross-Site Request Forgery)攻击的安全措施 form表单中进行csrf校验 添加CSRF Token字段 在form表单中添加一个隐藏字段用于存储CSRF Token的值。后端服务器在渲染表单时生成一个CSRF Token并将其存储在会话中或者以其他方式关联到当前用户。当用户提交表单时前端将CSRF Token的值包含在请求中。后端在验证表单数据时检查请求中的CSRF Token是否与存储的Token匹配如果不匹配则拒绝请求。 设置Cookie 后端服务器在渲染表单时在客户端设置一个包含随机生成的CSRF Token的Cookie。当用户提交表单时表单数据会被一同发送到服务器并自动包含该Cookie。后端在验证表单数据时检查请求中的CSRF Token是否与Cookie中的值匹配如果不匹配则拒绝请求。 双重Cookie校验 后端服务器在渲染表单时在Cookie中设置一个随机生成的CSRF Token并将其存储在会话中或以其他方式关联到当前用户。当用户提交表单时表单数据会被一同发送到服务器请求头或请求参数中携带一个包含CSRF Token的自定义字段。后端在验证表单数据时同时检查请求中的CSRF Token和Cookie中的值是否匹配如果不匹配则拒绝请求。 【1】form表单如何校验 在form表单上面加上csrf_token {% csrf_token %} form action methodpostpusername:input typetext nameusername/pptransfer_userinput typepassword namepassword/ppmoneyinput typetext namemoney/pinput typesubmit /form 在页面标签中会自动出现一个标签 input typehidden namecsrfmiddlewaretoken valuezQaNPZsy1tVmLdqC7GIDOOOfR7yT9YfO58lJ5yrjZfTw2edZTrVYUllOVMnkwXKe 【2】ajax如何校验 方式一 利用标签查找获取页面上的随机字符串键必须叫 csrfmiddlewaretoken button idb1ajax请求提交/buttonscript$(#b1).click(function () {$.ajax({url: ,type: post,// (1) 利用标签查找获取页面上的随机字符串data: {username: dream,csrfmiddlewaretoken:$([csrfmiddlewaretoken]).val()},success: function () {}})}) /script 方式二 利用模板语法进行快捷引入 button idb1ajax请求提交/buttonscript$(#b1).click(function () {$.ajax({url: ,type: post,// (2) 利用模板语法提供的快捷书写data: {username: dream, csrfmiddlewaretoken: {{ csrf_token }}},success: function () {}})}) /script 方式三 定义一个js文件并引入导入该配置文件之前需要先导入jQuery因为这个配置文件内的内容是基于jQuery来实现的 function getCookie(name) {var cookieValue null;if (document.cookie document.cookie ! ) {var cookies document.cookie.split(;);for (var i 0; i cookies.length; i) {var cookie jQuery.trim(cookies[i]);// Does this cookie string begin with the name we want?if (cookie.substring(0, name.length 1) (name )) {cookieValue decodeURIComponent(cookie.substring(name.length 1));break;}}}return cookieValue; } var csrftoken getCookie(csrftoken);function csrfSafeMethod(method) {// these HTTP methods do not require CSRF protectionreturn (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); }$.ajaxSetup({beforeSend: function (xhr, settings) {if (!csrfSafeMethod(settings.type) !this.crossDomain) {xhr.setRequestHeader(X-CSRFToken, csrftoken);}} }); button idb1ajax请求提交/buttonscript$(#b1).click(function () {$.ajax({url: ,type: post,// (3) 定义外部js文件并引入到本地data: {username: dream},success: function () {}})}) /script 四、csrf相关装饰器 网站整体部分校验csrf部分不校验csrf网站整体全部校验csrf部分不校验csrf 【1】csrf_protect装饰器 csrf_protect装饰器用于需要进行CSRF保护的视图函数或类视图。当一个视图被csrf_protect装饰器修饰时Django会对该视图接收到的所有POST、PUT、DELETE等非安全HTTP方法的请求进行CSRF校验。如果请求中没有有效的CSRF令牌或令牌校验失败Django将返回403 Forbidden响应。 【2】csrf_exempt装饰器 csrf_exempt装饰器用于不需要进行CSRF保护的视图函数或类视图。当一个视图被csrf_exempt装饰器修饰时Django将不会对该视图接收到的任何请求进行CSRF校验。这个装饰器主要用于一些特殊情况比如与第三方系统进行集成、开放API接口等。 【3】FBV中使用上述装饰器 from django.views.decorators.csrf import csrf_protect, csrf_exemptcsrf_protect 需要校验 csrf_exempt 忽视校验当我们没有注释掉csrf校验中间件的时候可以在函数头上加上 csrf_exempt 忽视校验 当我们注释掉csrf校验中间件的时候可以在函数头上加上 csrf_protect 强制启动校验 【4】CBV中使用上述装饰器 from django.views.decorators.csrf import csrf_protect, csrf_exemptcsrf_protect 需要校验针对 csrf_protect 符合之前的装饰器的三种用法 csrf_exempt 忽视校验针对 csrf_exempt 只能给 dispatch 方法加才有效(1)  csrf_protect (1) 方式一 给指定方法加method_decorator from django.views import View from django.views.decorators.csrf import csrf_protect, csrf_exempt from django.utils.decorators import method_decoratorclass MyCsrf(View):def get(self, request):return HttpResponse(get)method_decorator(csrf_protect)def post(self, request):return HttpResponse(post) (2) 方式二 给类加然后指明方法 method_decorator from django.views import View from django.views.decorators.csrf import csrf_protect, csrf_exempt from django.utils.decorators import method_decoratormethod_decorator(csrf_protect) class MyCsrf(View):def get(self, request):return HttpResponse(get)def post(self, request):return HttpResponse(post) (3) 方式三 重写 dispatch 方法 from django.views import View from django.views.decorators.csrf import csrf_protect, csrf_exempt from django.utils.decorators import method_decoratorclass MyCsrf(View):method_decorator(csrf_protect)def dispatch(self, request, *args, **kwargs):return super(MyCsrf, self).dispatch(request, *args, **kwargs)def get(self, request):return HttpResponse(get)def post(self, request):return HttpResponse(post) (2)  csrf_exempt方法 只有重写 dispatch方法 有效 from django.views import View from django.views.decorators.csrf import csrf_protect, csrf_exempt from django.utils.decorators import method_decoratorclass MyCsrf(View):method_decorator(csrf_exempt)def dispatch(self, request, *args, **kwargs):return super(MyCsrf, self).dispatch(request, *args, **kwargs)def get(self, request):return HttpResponse(get)def post(self, request):return HttpResponse(post)
http://www.dnsts.com.cn/news/150094.html

相关文章:

  • 丹东制作网站公司用模板建商城购物网站
  • html5做网站链接范例电子商务网站建设特点
  • 房建设计图网站手机网站app开发
  • 洛阳网站建设汉狮怎么样网站右侧浮动导航
  • 犀牛云做网站骗人建设直播网站软件
  • asp本地网站无法打开中山模板建站软件
  • 好的h5网站模板金华义乌网站建设
  • 杨和网站设计网站是用什么技术做的
  • access 可以做网站不国家企业公示网入口官网登录
  • 做网站如何来钱如何推广一款app
  • 湖南北山建设集团股份有限公司官方网站广州装饰公司
  • 飞色网站商城怎么做青岛 生物类网站建设
  • asp.net微信网站wordpress 主题制作 视频教程
  • 怎么做夜场网站模板网站的弊端在哪
  • 绍兴网站建设设计永久免费的自助建站
  • 网站建设收费标准平台门户类网站
  • 网站建设最新教程无极网络是什么意思
  • 青岛网站建设微动力桂林网站推广
  • 个人网站建设与企业网站哈尔滨百度网站排名
  • 一起做英语作业网站php 搭建手机网站
  • dedecms 倒计时 天数 网站首页国外开网站怎样做平帐
  • 用meteor框架做的微博网站WordPress购物个人中心
  • 陕西建设信息网石家庄seo推广公司
  • 哈尔滨做平台网站平台公司吗可以做锚文本链接的网站
  • 公司制作网站收费标准开个广告公司大概需要多少钱
  • 做外贸的怎么建立自己的网站天天向上做图网站
  • html做的网页怎么变成网站网站的推广平台
  • 联系我们_网站制作公司wordpress文章评论设置
  • 网站一个一个关键词做网站前端是什么意思
  • 关于课题网站建设的协议外贸网站的作用有哪些