Django 介绍

Django官方文档

Django 安全性

Django 的安全:如何防止 XSS 跨站脚本攻击

恶意攻击者将代码通过网站注入到其他用户浏览器中的攻击方式。

  • 攻击者会把恶意 JavaScript 代码作为普通数据放入到网站数据库中;

  • 其他用户在获取和展示数据的过程中,运行JavaScript 代码;

  • JavaScript 代码执行恶意代码(调用恶意请求,发送数据到攻击者等等)。

Django 的安全:CSRF 跨站请求伪造和 SQL 注入攻击

  • CSRF(Cross-site request forgery,简称:CSRF 或 XSRF)

  • 恶意攻击者在用户不知情的情况下,使用用户的身份来操作

  • 黑客的准备步骤

    • 黑客创建一个 请求网站 A 类的 URL 的 Web 页面,放在恶意网站 B 中 ,这个文件包含了一个创建用户的表单。这个表单加载完毕就会立即进行提交。

    • 黑客把这个恶意 Web 页面的 URL 发送至超级管理员,诱导超级管理员打开这个 Web 页面。

SQL 注入攻击

  • SQL 注入漏洞: 攻击者直接对网站数据库执行任意 SQL语句,在无需用户权限的情况下即可实现对数据的访问、修改甚至是删除

  • Django 的 ORM 系统自动规避了 SQL 注入攻击

  • 原始 SQL 语句,切记避免拼接字符串,这是错误的调用方式:

    query = 'select * from employee where name = %s' % name
    Person.objects.raw(query)
    
  • 正确的调用方式, 使用参数绑定:

    name_map = {'first': 'first_name', 'last': 'last_name', 'bd': 'birth_date', 'pk': 'id'}
    >>> Person.objects.raw('select * from ecployee', translations=name_map)