Django是如何防止注入攻击

注入攻击-XSS攻击-CSRF攻击介绍请访问:https://www.cnblogs.com/hwnzy/p/11219475.html


1 Django防止注入攻击

Django提供一个抽象的模型层来组织和操作Web应用的数据,通过使用Django的查询集,产生的SQL会由底层数据库驱动正确地转义,从而可以防止SQL注入。


2 Django防止XSS攻击

1. 使用Django模板语言(DTL)编写HTML,Django会自动进行HTML转义,如:

  • < 会转换为&lt;

  • > 会转换为&gt;

  • '(单引号)转换为&#39;

  • " (双引号)会转换为 &quot;

  • & 会转换为 &amp;

    <p>Hello, {{ name }}</p> <!-- 当把name赋值为<script>alert('attack')</script>时 --> <p>Hello, &ltscript&gtalert(&#39attack&#39)&lt/script&gt</p>

2.可以对每个不被信任的值使用escape过滤器,它将对变量进行HTML转义。escapejs可以转义用于JavaScript字符串的字符。

1{{ value|escape }} 2{{ value|escapejs }}

3 Django防止CSRF攻击

1.默认情况settings.py中的MIDDLEWARE已经激活CSRF中间件'django.middleware.csrf.CsrfViewMiddleware'

2.在使用POST表单的模板中在<from>元素中使用csrf_token标签

1<form action="" method="POST"> 2{% csrf_token %} 3</form>

 3.在相应的视图函数中要确保使用RequestContext来渲染响应,这样{% csrf_token %}才能正常工作。render函数、通用视图或contrib应用都使用了RequestContext。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

PPDB:今晚老齐直播

【今晚老齐直播】今晚(本周三晚)20:0021:00小白开始“用”飞桨(https://www.oschina.net/action/visit/ad?id1185)由PPDE(飞桨(https://www.oschina.net/action/visit/ad?id1185)开发者专家计划)成员老齐,为深度学习小白指点迷津。