1. 跨站脚本攻击跨站脚本攻击,英文全称为Cross site scripting (XSS),指黑客在其他用户访问的网页中注入恶意代码或者引诱用户单击特定的网络连接而执行攻击脚本,从而达到攻击目的。默认情况下Django模板会将每一个输出字符进行安全转义,尤其是以下5个字符:将<转义为<将>转义为>将’(英文单引号)转义为';将”(英文双引号)转义为"将&转义为&
2. 跨站请求伪造攻击跨站请求伪造攻击,英文全称为Cross site request forgery (CSRF),攻击者会在用户不知情的情况下使用用户的安全证书进行非法攻击。例如当用户登录完网银后,在没有退出系统的情况下访问了攻击者的恶意网站,此时恶意网站可以利用用户已有的session系统进行非法操作。在前面的学习中我们已经接触了Django的CSRF保护,Django的CSRF保护可以保护我们免受绝大多数的CSRF攻击。在使用Django的CSRF保护时仍存在一些限制,如开发人员人为的在全站或特定视图中禁用了CSRF保护,或者网站存在一个全新的子站,主站与子站处于不同域。Django的CSRF保护会检查每一个POST请求,这使得攻击者不能通过简单的提交表单来进行非法操作。如果使用HTTPS协议部署网站的话,CsrfViewMiddleware将会检查每一个HTTP报文头以确认请求来自于同一个域。
3. SQL注入SQL注入是攻击者在网站数据库中执行一段恶意SQL脚本的攻击方式,这类攻击通常会导致数据库被删除或者数据泄露。Django的queryset能够有效的阻止SQL注入攻击,由于SQL脚本中的参数可能来自于用户提交的数据,所以queryset将每一个参数都进行转义,这样保证了任何被执行的SQL脚本都是安全可靠的。由于Django给与开发人员很大的自由空间,所以开发人员仍然可以编写自定义SQL脚本,对于这种情况,开发人员一定要注意代码的安全性。
4. 点击劫持点击劫持是在恶意网站中嵌入一个iframe的方式诱使用户点击从而达到非法入侵的网络攻击方式,制造这种攻击的成本高,非常少见。Django对此提供了保护,利用中间件XFrameOptionsMiddleware可以有效的阻止自己的网站被其它网站以frame的方式引用。如果网站不需要在frame中引用的话,强烈建议启用XFrameOptionsMiddleware。