Django项目部署 - 服务器安全

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

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

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

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

‘class1 οnmοuseοver=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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值