CSRF-跨域访问保护

CSRF跨域访问保护

当我们打开此功能时,在提交时就会报错,此时解决方法有

1.浏览器支持cookie

2.有render方法

3.在提交的表单中加入{% csrf_token%},为了生成随机值。

现在我们就以第三种为例,就可以解决此类问题了

 1 {% extends "index.html" %}
 2
 3 {% block extra-head-resources %}
 4
 5      <script src="/static/plugins/ckeditor/ckeditor.js"></script>
 6 {% endblock %}
 7
 8 {% block container %}
 9
10 <div style="min-height: 600px;padding-bottom: 50px">
11
12     <form method="post" enctype="multipart/form-data"> {% csrf_token %}
13
14         {% for field in form %}
15             <div class="form-group">
16                 <label  class="col-sm-2 control-label">{{ field.name }}</label>
17                 <div class="col-sm-10">
18                   {{ field }}
19                   <span style="color: red">{{ field.errors }}</span>
20                 </div>
21             </div>
22
23         {% endfor %}
24         <input type="submit" class="col-lg-offset-5 btn btn-sm btn-success" value="提交">
25     </form>
26 </div>
27
28
29 <script>
30     // Replace the <textarea id="editor1"> with a CKEditor
31     // instance, using default configuration.
32     CKEDITOR.replace( ‘id_body‘ );
33 </script>
34
35
36 {% endblock %}

new_article.html

为了防止CSRF攻击,分辨来源,将随机值放在页面中,而不是放在POST请求中,这样就不会被恶意使用。

Middleware中间件

为了能使用户对django的request/response请求处理过程及请求数据包进行全局的更改,比如对所有的请求进行是否已登录的验证,是否有注入或其他攻击行为的检测等,django提供了一个轻量级、底层的钩子插件,就叫中间件。

MIDDLEWARE = [
‘django.middleware.security.SecurityMiddleware‘,     进行一些请求的安全验证,xss攻击过滤,ssl重定向(自动重定向到https)
‘django.contrib.sessions.middleware.SessionMiddleware‘,     启用对session的支持
‘django.middleware.common.CommonMiddleware‘,             做一些常用的小功能,检测url,会自动把foo.com/bar,重定向程foo.com/bar/
‘django.middleware.csrf.CsrfViewMiddleware‘,                     跨域请求保护
‘django.contrib.auth.middleware.AuthenticationMiddleware‘,    认证
‘django.contrib.messages.middleware.MessageMiddleware‘,      启用django自带的消息日志插件
‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,    点击劫持
]

自定义中间件

要在settings中,将自己创建的申明

 1 MIDDLEWARE = [
 2     ‘django.middleware.security.SecurityMiddleware‘,
 3     ‘django.contrib.sessions.middleware.SessionMiddleware‘,
 4     ‘django.middleware.common.CommonMiddleware‘,
 5     ‘django.middleware.csrf.CsrfViewMiddleware‘,
 6     ‘django.contrib.auth.middleware.AuthenticationMiddleware‘,
 7     ‘django.contrib.messages.middleware.MessageMiddleware‘,
 8     ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,
 9     ‘bbs.test_middleware.SimpleMiddleware‘
10 ]

settings

 1 from django.shortcuts import render,HttpResponse,redirect
 2 class SimpleMiddleware(object):
 3     def __init__(self, get_response):
 4         self.get_response = get_response
 5         # One-time configuration and initialization.
 6
 7
 8     def __call__(self, request):
 9         # Code to be executed for each request before
10         # the view (and later middleware) are called.
11
12         response = self.get_response(request)
13         print("middleware",response)
14
15         # Code to be executed for each request/response after
16         # the view is called.
17
18         return response
19     def process_view(self,request,view_func,view_args,view_kwargs):
20         print(‘process view‘,self,request,view_func,view_args,view_kwargs)
21     def process_exception(self,request,exception):
22         print(‘process excetion‘,request,exception)
23         return HttpResponse(‘error happend....%s‘ % exception)
24
25     def process_template_reponse(self,request,response):
26         print(‘process_template_reponse‘,request,response)

时间: 2024-08-12 16:24:35

CSRF-跨域访问保护的相关文章

JS同源策略和跨域访问

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现. 1. 什么是同源策略 理解跨域首先必须要了解同源策略.同源策略是浏览器上为安全性考虑实施的非常重要的安全策略. 何谓同源: URL由协议.域名.端口和路径组成,如果两个URL的协议.域名和端口相同,则表示他们同源. 同源策略: 浏览器的同源策略,限制了来自不同源的"doc

Javascript 跨域访问解决方案 总结

在客户端编程语言中,如javascript和ActionScript,同源策略是一个很重要的安全理念,它在保证数据的安全性方面有着重要的意义.同 源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法.那么什么叫相同域,什么叫不同的域呢? 同源策略 在客户端编程语言中,如javascript和 ActionScript,同源策略是一个很重要的安全理念,它在保证数据的安全性方面有着重要的意义.同源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问和操作另外一个

第二百七十四节,同源策略和跨域访问

同源策略和跨域访问  什么是同源策略 尽管浏览器的安全措施多种多样,但是要想黑掉一个Web应用,只要在浏览器的多种安全措施中找到某种措施的一个漏洞或者绕过一种安全措施的方法即可.浏览器的各种保安措施之间都试图保持相互独立,但是攻击者只要能在出错的地方注入少许JavaScript,所有安全控制几乎全部瓦解--最后还起作用的就是最弱的安全防线:同源策略.同源策略管辖着所有保安措施,然而,由于浏览器及其插件,诸如Acrobat Reader.Flash 和Outlook Express漏洞频出,致使同

同源策略和跨域访问

1. 什么是同源策略 理解跨域首先必须要了解同源策略.同源策略是浏览器上为安全性考虑实施的非常重要的安全策略.     何谓同源:         URL由协议.域名.端口和路径组成,如果两个URL的协议.域名和端口相同,则表示他们同源.     同源策略:         浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性. (白帽子讲web安全[1])         从一个域上加载的脚本不允许访问另外一

同源策略与跨域访问

1. 什么是同源策略 理解跨域首先必须要了解同源策略.同源策略是浏览器上为安全性考虑实施的非常重要的安全策略.    何谓同源:        URL由协议.域名.端口和路径组成,如果两个URL的协议.域名和端口相同,则表示他们同源.    同源策略:        浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性. (白帽子讲web安全[1])        从一个域上加载的脚本不允许访问另外一个域的文档

angularjs 控制器不能访问nodejs 3000端口,跨域访问

目前做的一个项目,前端采用的是angularjs,后端nodejs做服务器. 我尝试使用接下里的方式来发起对nodejs服务器的请求: <span style="font-family:SimHei;font-size:18px;"> $http.get('http://localhost:3000/') .success(function (data) { $scope.index = data; }) .error(function (data) { $scope.in

解说同源策略和跨域访问

尽管浏览器的安全措施多种多样,但是要想黑掉一个Web应用,只要在浏览器的多种安全措施中找到某种措施的一个漏洞或者绕过一种安全措施的方法即可.浏览器的各种保安措施之间都试图保持相互独立,但是攻击者只要能在出错的地方注入少许JavaScript,所有安全控制几乎全部瓦解--最后还起作用的就是最弱的安全防线:同源策略.同源策略管辖着所有保安措施,然而,由于浏览器及其插件,诸如Acrobat Reader.Flash 和Outlook Express漏洞频出,致使同源策略也频频告破. 既然web应用的最

No &#39;Access-Control-Allow-Origin&#39; Ajax跨域访问解决方案

No 'Access-Control-Allow-Origin' header is present on the requested resource. 当使用ajax访问远程服务器时,请求失败,浏览器报如上错误.这是出于安全的考虑,默认禁止跨域访问导致的. 一.什么是跨域访问 举个栗子:在A网站中,我们希望使用Ajax来获得B网站中的特定内容.如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题.你可以理解为两个域名之间不能跨过域名来发送请求或者请求数据,否则就是不安全的.跨域访问违反

[转]No &#39;Access-Control-Allow-Origin&#39; header is present on the requested resource.&#39;Ajax跨域访问解决方案

原 https://blog.csdn.net/zhoucheng05_13/article/details/53580683 No 'Access-Control-Allow-Origin' header is present on the requested resource. 什么是跨域访问 举个栗子:在A网站中,我们希望使用Ajax来获得B网站中的特定内容.如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题.你可以理解为两个域名之间不能跨过域名来发送请求或者请求数据,否则就是不安