Django知识点汇总

Django是一个高级的Python web框架,鼓励快速,以程序设计的思想进行开发。通过使用这个框架,可以省去很多环节,使你更专注于编写自己的app,而不需要重复造轮子。而且Django代码是完全开源的。

源码浅析

了解Django之后,首先大概看一下Django 项目的主要目录,通过下面这篇文章初步建立一下Django源码的世界观吧!

【Django源码浅析】——Django命令模块

Django采用MTV架构,服务器在收到用户访问请求后,先对url解析,调用view(MTV中的V)中的逻辑,其中又涉及到Model(MTV中的M),与数据库进行交互,将数据发到Template(MTV中的T)进行渲染,然后发送到浏览器中,把视图呈现给用户;

Django应用技巧

从事web开发的同学在Django项目开发过程中,是不是经常遇到这样的场景:需要实现一个定时任务,但又不想脱离Django环境独立运行,如:还需要使用Django的ORM框架操作Models类、日志框架、复用已有配置/方法等等。大部分同学,初次接触时首先想到的就是使用第三方插件,如:django-celery,django-crontab等等,我也不例外,但实际使用过程,总有诸多不爽,要么感觉大材小用,要么功能支持不完整,要么使用很繁琐。通过下面这篇文章,可以完美解决这类问题:

使用Django ORM框架的定时任务

 

有如下场景, 我有一个Model名为Alert,表示一条告警. 我需要在创建一个告警后进行邮件通知. 怎么实现呢?

Django 信号使用简介

Django的认证机制

但凡是一个公开使用的系统,都离不开认证登录这个模块,如何快速出一个基本的认证登录页面供使用则是经常遇到的问题。好在django有一套成型的注册登录模块可供使用。如果你跟我一样不想重复造轮子,那么这篇分享或许可以帮你快速完成任务。

下面就几个关键常用的问题以FAQ的方式给出我在这块的学习总结笔记。

使用Django轻松几步搞定用户认证功能

下面介绍另一种认证机制:基于token认证;一步一步教你基于JWT的Token认证机制实现,以及如何防范XSS攻击、Replay攻击和中间人攻击。

含详细操作过程

基于token的认证机制

存在漏洞

开源代码中存在漏洞是在所难免的,在使用中要注意规避这些漏洞。

Django是Python世界最有影响力的web框架。DjangoUeditor是一款可以在Django应用中集成百度Ueditor HTML编辑器的插件(Ueditor HTML编辑器是百度开源的在线HTML编辑器)。DjangoUeditor插件上存在一个漏洞,可以导致任意文件上传。再者,DjangoUeditor于2015年1月17号后,再也没有更新过,见github上作者的说明:

影响版本:DjangoUeditor < 1.9.143

DjangoUEditor任意文件上传漏洞分析

 

 

最近在进行网站代码审查的过程中,发现某些产品由于session使用不当,导致可能被攻击者利用,执行任意代码。这些产品在登录的JS代码中,泄露了SECRET_KEY,将该值作为密码加密的盐,这样就暴露了加密salt不太好吧,更重要的是对django的安全造成了极大的威胁。

Django任意代码执行漏洞分析

 

绿盟NTI中django的应用

 

NTI任务管理之django+python篇celery异步任务使用

新浪微博的新鲜事推送如何实现?大规模的服务器如何实现Crontab管理?里面的秘密就在于消息队列。Celery是一个使用Python开发的分布式任务调度模块,是一个简单、灵活、可靠的处理大量消息的分布式系统。在大量异步任务处理和大量定时任务管理的情况下,我们可以优先考虑采用celery和rabbitMq解决这些问题。本文介绍了Celery以及Django中Celery的实现

 

 

Django安全编码

HTTP采用明文传输,如果不对用户密码进行加密处理的话,会导致用户密码明文暴露在网络,通过监听抓包很容易获得。此问题处理方法一般有使用https代替http或对http 表单提交数据进行加解密处理。这里分享的是用RSA非对称加密算法对数据进行加解密,前端js使用公钥进行加密,后端python使用私钥进行解密。并且基于 解决Http post 数据中密码明文泄露的问题,进行相关实验;

实验环境:Django,python2.7,js

具体实现步骤请参考文章:

Python + js 通过RSA算法对post表单数据进行加密处理

 

在阅读资料代码时,发现了很多CSRF的使用,而且写法不一样。查了查资料,发现说法不一,实践是检验真理的唯一标准,于是搭个小项目进行验证。在此简单总结,分享给需要的同学。请戳链接参与讨论。

认识CSRF及其在Django中的防护

 

安全检查发现的问题中,其中一个棘手的是CSRF处理。原来使用Django时,要么直接绕过,去掉中间件不用,要么就是加@csrf_exempt屏蔽掉。 因为不理解,所以心里犯怵,故尔避之。 可是,这次面临的是Django + Jinja2结合的环境。经过学习发现Django使用专门的中间件(CsrfMiddleware)来进行CSRF防护,现分享具体操作如下,以后看见CSRF就不怕不怕了!详情请参考下面这篇文章

看见CSRF我不怕不怕了

CSRF攻击原理见下图:

总结

以上是对博客内部Django的文章汇总,如果你对Django有更深研究或是好用的技巧,来一起参与分享把!

发表评论