Django项目部署 - 服务器安全

来源:互联网 发布:笔记本无线找不到网络 编辑:程序博客网 时间:2024/06/05 06:47

*跨站脚本安全保护 Cross site scripting protection

跨站脚本攻击(XSS)通常发生于站点存储和使用不安全的内容,例如数据库里存储的用户的内容是用户的脚本,这些脚本读取后未经处理便执行导致了网站的不安全。例如

<style class={{var}}>...</style>

当var是来自用户类似于这样的内容:

‘class1 onmouseover=javascript:func()’

这样就可能导致浏览器执行不安全的脚本。为了避免这类问题,django模板会自动过滤特殊字符,类似 ‘<’, '>'之类的字符会被过滤。

如果你确定安全不需要过滤,可以使用safe过滤器,并在合适的地方用双引号。

<style class="{{var|safe}}">...</style>


*跨站请求伪造保护  CSRF(cross site request forgery)protection

未知用户伪装成登陆用户去提交表单

A站的javascript 在用户打开B站后, 提交了B站的一个表单到B站(因为这时用户已经登陆了B站,所以B站以为这是用户提交的),但这不是用户的行为

django有CSRF保护模块,必须在MIDDLEWARE_CLASSES里加上:

'django.middleware.csrf.CsrfViewMiddleware'

在form里必须加上{% csrf_token%}才能通过服务器验证,

<form action="" method = "post"> {% csrf_token%}

默认全站有效

如果只想保护特殊的view,  请单独在view函数前加上@csrf_protect

还有一个设置允许来自指定站点的POST请求

CSRF_COOKIE_DOMAIN = '.example.com'

如果view 不考虑CSRF, 可在view前加@csrf_exempt


*SQL注入攻击保护 SQL injection protection

SQL注入式在SQL里隐藏附带的脚本去数据库里执行的行为,django的QuerySet会跳过打本这类隐藏脚本


*点击劫持攻击保护 Clickjacking

如A站点把B站点的内容放在了一个frame里来伪装,当用户点击A的‘赞’按钮会自动调用js去点击B的‘确定购买’按钮

django防止攻击的方法是在中间件加上

‘django.middleware.clickjacking.XFrameOptionsMiddleware’


*开启SSL/HTTPS

根据需要开启 HTTPS设置,提高服务器安全性

SESSION_COOKIE_SECURE=True

CSRF_COOKIE_SECURE=True

SECURE_PROXY_SSL_HEADER=('HTTP_X_FORWARDED_PROTO', 'https')

SECURE_SSL_REDIRECT=True


*在ALLOWED_HOSTS里指定哪些HOST是可以访问的




0 0