网站安全服务应该如何安全储存用户数据

news/2024/5/15 3:12:05/文章来源:https://blog.csdn.net/weixin_34277853/article/details/89701450

这几天AcFun数据库泄露的消息一大早就沸沸扬扬地传开了,所幸从AcFun的公告里可以看出泄露的用户密码均经过「加密」(实际上指哈希),所以我们仍然是安全的。

网站安全代码

从泄露出的部分信息可以看到,在存储密码这件事上,AcFun并没有犯什么低级错误,加之道歉诚恳,很多人表示「选择原谅」。

合格的后端开发者和运维人员需要考虑每个接口的安全性、每个可被公网访问到的服务器的安全性,保证不要犯错。但是我们还需要考虑,如何在已经犯错的情况下把损失降低到最小。在做数据的存储方案时,我们需要假设储存的数据已经被泄露出去了,如用户密码这种隐私数据的存储就是一个重点。

讲密码的存储方案前,先要记住三条前提:

用户喜欢到处使用一样的密码

用户喜欢使用简单好记的密码

世界上没有绝对的安全,但当攻击成本远高于收益时,整个系统达到相对安全

明文存储?

即使仅从道德的角度来说,后端也不应该以明文形式存储用户密码。

2011年CSDN密码泄露事件和2016年的网易52G事件出现后,比他们数据库被盗这件事更令人震惊的是,他们泄露的数据库里的密码居然全部都是明文。

明文存储的方法将安全性全部下放给了运维人员、开发人员和管理人员:

从运维层面看,任何操作系统漏洞、基础工具漏洞的发生,都会导致密码泄露

从开发层面看,任何代码逻辑有漏洞、任何依赖库的漏洞都可能导致密码泄露

从管理层面看,任何一个有权限读取数据库的人,都能看到所有用户的密码

由于前提1(大家总是到处使用一样的密码),所以明文密码泄露之后,再使用撞库攻击,还能得到其他网站的用户密码,对用户造成更严重的危害。比如2014年的12306密码泄露事件里,12306并没有犯错,只是黑客收集了很多其他网站的明文账号密码,再去12306批量尝试登陆,就可以得到大量用户的12306信息。

所以,后端不应该以任何明文或可以转换回明文(如可逆的加密)的形式储存密码。由于储存的信息并不是明文,所以大多数网站的「找回密码」功能并不能真的告诉你密码,只能让你重新设置一次。如果你发现一个网站的「找回密码」功能真的找回了你的密码,那就要当心你密码的安全性了。

做个哈希?

要保存密码的某种可被验证的形式,又要让保存的数据「不可逆」,首先能想到的就是哈希了。

十年前,大多数网站保存的都是经过一次MD5哈希的密码。哈希保存的思路很简单:用户注册时,把他的密码做一次MD5运算储存起来;用户登录时,把他输入的密码做一次MD5运算,再验证是否和数据库里储存的一致。

在MD5被证明不够安全以后,大家又开始选择其他的哈希算法如sha256等。但除了哈希算法本身的安全性外,这种做法的缺陷很快暴露,就是应付不了彩虹表的攻击方式。

md5哈希

彩虹表就是把简单的数字密码组合(和各种常见密码)的哈希先尽可能的计算出来,这些明文和哈希结果的对应关系就是一张彩虹表。由于前提2(大家喜欢使用简单好记的密码),所以试着计算出一个常用范围内的所有字母组合的哈希的彩虹表,可以破解绝大多数人的密码。当彩虹表足够大时,这种存储方式实际上与明文无异。

下图是cmd5这个网站已经破解的明文范围。

md5数据

在这种储存方式下,一次运算出的彩虹表可以被使用无数次,均摊到每个网站的每个用户的成本是极低的,所以至今仍然有很多服务器在孜孜不倦地运算着md5哈希的彩虹表。这张彩虹表也在大家的努力下变得越来越大。

加盐哈希?

加盐哈希是目前业界最常见的做法。

加盐哈希的步骤如下:

用户注册时,给他随机生成一段字符串,这段字符串就是盐(Salt)

把用户注册输入的密码和盐拼接在一起,叫做加盐密码

对加盐密码进行哈希,并把结果和盐都储存起来

在登陆时,先取出盐,再同样进行拼接、计算哈希,就能判断密码的合法性。

加盐哈希的做法,既保证了储存数据的不可逆,又防止了上一章的彩虹表攻击方式。这种方式下,黑客拿到数据库后,如果再要用遍历所有常用的密码组合的方式做彩虹表,那他需要对所有

常用密码+盐值

进行哈希运算。而每个用户的盐值都不相同,之前彩虹表的「一次运算无数次使用」变成了「一次运算一次使用」。这样的成本是难以接受的,由于前提3(攻击成本远高于收益,系统达到相对安全),所以这是一个比较安全的做法。

除了密码,还有别的信息

除了密码以外,手机号等信息也是重要的隐私数据。但手机号与密码不同:对于后端来说,永远不知道密码的明文也不会对业务逻辑造成影响;而后端可能需要明文的手机号,在一些情况下给用户发送短信。

对于手机号这种信息,只能用相对安全的做法,即先对手机号进行对称加密,再将加密结果储存在数据库里;使用时再用密钥解开。

这时密钥不应该被保存在数据库里。如果数据库被拖库,那么些数据的安全性与明文无异。通常会将密钥以环境变量的形式放在服务器上。这时除非网站在被拖库的情况下同时被拿到服务器权限,否则手机号的明文就不会被泄露出去。

不幸的是,从今天AcFun泄露数据来看,A站对手机号应该也做了对称加密存储,但它就是在被拖库的情况下同时被拿到了服务器权限,所以手机号就以明文形式展示了出来。

除了数据库,还有别的地方

就在上个月,2018年的5月4日,twitter发布了一则公告,称他们从来不会把密码的明文储存下来,但他们自己发现了一个漏洞:密码被储存在请求日志里了。

在后端项目生产环境里,总是会打印并收集各种各样的日志。日志可以方便统计数据、在出错的时候回溯、调试bug。但是我们不应该总是打印和收集全部请求的正文内容,因为请求里可能包含密码等敏感信息。当日志被泄露时,用户数据同样会以明文形式直接泄露出去。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_769120.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python:scrapy 一个网站爬虫库

Scrapy是一个用于抓取网站和提取结构化数据的应用框架,可用于广泛的有用应用,如数据挖掘、信息处理或历史档案。也可以使用api提取数据,或者作为一个通用的web爬虫。 安装 C:\Users\lifeng01>pip install scrapy Collecting scrapyDownl…

百度熊掌号SEO指南1.0,seo重点摘录

百度熊掌号seo指南6月6号发布,一直没有时间去研读,今天粗略的看了一下,内容包含对seo的要求,对网站的要求,对运营的支持,和对熊掌号功能的介绍。由于自己比较注重seo方面,所以今天就先摘了了&am…

mflac格式_免费的在线音视频格式转换网站汇总

1、.mov转换为.mp4.mov是QuickTime影片格式,是Apple公司开发的一种音频、视频文件格式。我们只需要iMovie打开相关文件,然后重新导出即可,iMovie默认导出的视频格式就是.mp42、.mp4转换为.gifconvertio:https://convertio.co/zh/m…

大型网站系统与Java中间件实践 02 Java中间件

01 认识分布式02 Java中间件03 分布式框架 3 构建Java中间件 3.1 什么事中间件? 中间件不是最上层的应用也不是最底层的支撑系统,中间件在项目中起到桥梁作用,特定中间件是解决特定的场景问题的组件。让开发聚焦于自己的业务。 常用中间件的分…

使用hexo做博客网站

2019独角兽企业重金招聘Python工程师标准>>> hexo有什么用? hexo 可以把md文件生成html静态网页。 hexo官网:https://hexo.io/zh-cn/ 本地安装hexo。 npm install -g hexo-cli #生成blog(名字任意)文件夹,并…

网市场云建站 v4.8 增加私有模版库,开放 Mysql 配置、在线客服源码

网市场云建站系统,结合各种产品,将一个网站的服务器成本降低到0.1元!打破传统建站的高成本,让价格不再是阻碍的门槛,让每个人都能有自己的网站! 延续了帝国CMS、织梦CMS优秀的模板流程,模板页面…

python大佬常去网站

常用网站: 1.StackOverflow (https://stackoverflow.com/) 2.github (https://github.com/) 3.Awesome Python (https://github.com/) 4.python中文学习大本营 (http://www.pythondo…

前嗅ForeSpider教程:网站登录配置

当我们在采集中碰到:所采集的网站数据需要登录,才可以看到所需信息时,则需要在软件中模拟登陆环境,采集数据,此时需要配置登录信息。今天小编就教大家:如何进行网站登录配置,具体步骤如下&#…

HBaseOnOSS冷数据存储

本期直播Topic:HBaseOnOSS冷数据存储 讲师:陆豪——阿里多模型数据库专家 视频回看地址:https://yq.aliyun.com/live/709/ PPT下载地址:https://yq.aliyun.com/download/3137 往期直播资料: 第四期:hbase 备份恢复资料…

阿里云ECS建站超详细全套完整图文教程

第一步:如何以最低价格快速买到阿里云服务器? 1.1 如果我是学生,我如何通过¥9.9买到价值¥117的服务? 答:用¥9.9购买云服务器ECS是阿里云学生专属活动。首先,你需要在阿里…

网站502与504错误分析

为什么80%的码农都做不了架构师?>>> 一. 戏说 不管你是做运维还是做开发,哪怕你是游客,时不时会遇到502 Bad Gateway或504 Gateway Time-out。出现这页面,把服务重启下,再实在不行重启下服务器&#xff0c…

360WiFi的服务器网站,360随身无线wifi怎么搭建web认证网页

如果只有360随身无线wifi,那你知道怎么使用360无线wifi来免费搭建web认证网页吗?下面是学习啦小编给大家整理的一些有关360随身无线wifi搭建web认证网页的方法,希望对大家有帮助!360随身无线wifi搭建web认证网页的方法首先,打开360随身wifi官…

python抓取网站图片_python爬虫基础教程:手把手教你网页图片的抓取方法

原标题:python爬虫基础教程:手把手教你网页图片的抓取方法 今天小编给大家分享基于python写的一个爬虫程序,能实现简单的网页图片下载,具体实例代码大家参考下本文 学习python、python爬虫过程中有不懂的可以加入我的python零基础…

json格式生成器_VuePress - Vue驱动的静态网站生成器

还在烦恼怎么做一个简单又美观的文档或博客网站吗?VuePress,让你十分钟就能搭建一个静态网站!Vue.js简介VuePress,是 vuejs 在 Github 上开源的静态网站生成器,项目仓库位于 https://github.com/vuejs/vuepress&#x…

sqlmap自动扫描注入点_sqlmap,扫描网站数据库并得到用户名及密码!

接着上篇文章,你已经对sqlmap有了了解。那么我们今天就进一步了解sqlmap,使用sqlmap对一个网站解剖分析!SqlMap的程序允许检查网站的SQL注入漏洞,XSS漏洞的存在,并且可以还利用SQL注入。支持多种SQL注入类型和多种数据…

论坛隐藏链接获取_同业竞争网站论坛发外链

写在前边得话:建立网站必须顽强的团队执行力,特别是在是站长,由于站长沒有强劲的营销团队,沒有深厚的资产,都没有人脉关系。站长中又也有业余组网站站长和岗位网站站长,业余组网站站长更不幸,由…

linux drupal 7安装教程,drupal7|drupal 7(建站开发工具)下载附安装教程 - 欧普软件下载...

​drupal7是一款非常好用的建站开发工具,采用PHP语言编写的开源内容管理框架,由内容管理系统(CMS)和PHP开发框架(Framework)共同构建,集内核、模块、主题三大功能于一体,可以制作不同类型的网站,小编还提供了drupal7安…

php mysql购物网站作业_购物网站的设计与实现(PHP,MySQL)(含录像)

购物网站的设计与实现(PHP,MySQL)(含录像)(毕业论文10000字,程序代码,MySQL数据库)本项目是通过B/S框架技术来进行设计和实现的。项目主要用到的技术有php,PHPscript,html/css等。数据库使用的是MySQL。购物网站共分为两个部分,一部分是面向用…

apache的网站配置目录_Apache监控与调优(一)目录结构

Apache安装好后,主要包含的目录文件有:bin、build、cgi-bin、conf、error、htdocs、icons、include、lib、logs、man、manual和modules。这些目录文件主要的作用如下:1) bin目录主要是存放一些命令文件,最常用的是apache启动、关闭…

flask+echarts+mysql_实战|Python爬虫并用Flask框架搭建可视化网站

大家好,我是J哥,也可以叫我菜J,专注原创,致力于用浅显易懂的语言分享网络爬虫、数据分析、可视化等干货,希望人人都能学到新知识。项目背景事情是这样的,最近呢,一直有朋友问我有没有什么办法将…