大多数的web开发者都会遇到设计用户账号系统的需求。账号系统最重要的一个方面就是如何保护用户的密码。一些大公司的用户数据库泄露事件也时有发生,所以我们必须采取一些措施来保护用户的密码,即使网站被攻破的情况下也不会造成较大的危害。如果你还在存储用户密码的MD5,那可真的有点弱了。赶紧
来看看这篇文章吧。保护密码
最好的的方式就是使用带盐的密码hash(salted password hashing).对密码进行hash操作是一件很简单的事情,
但是很
多人都犯了错。接下来我希望可以详细的阐述如何恰当的对密码进行hash,以及为什么要这样做。重要提醒如果你打算自己写一段代码来进行密码hash,
那么赶紧停下吧。这样太容易犯错了。这个提醒适用于每一个人,不要自己写密码的hash算法 !关于保存密码的问题已经有了成熟的方案,那就是使用phpass或者本文提供的源码。什么是hashhash("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824hash("hbllo") = 58756879c05c68dfac9866712fad6a93f8146f337a69afe7dd238f3364946366hash("waltz") = c0e81794384491161f1777c232bc6bd9ec38f616560b120fda8e90f383853542Hash算法是一种单向的函数。它可以把任意数量的数据转换成固定长度的“指纹”,这个过程是不可逆的。而且只要输入发生改变,哪怕只有一个bit,输出的hash值也会有很大不同。这种特性恰好
合适用来用来保存密码。因为我们希望使用一种不可逆的算法来加密保存的密码,同时又需要在用户登陆的时候验证密码是否正确。在一个使用hash的账号系统中,用户注册和认证的大致流程如下:1, 用户创建自己的账号2, 用户密码经过hash操作之后存储在数据库中。没有任何明文的密码存储在服务器的硬盘上。3, 用户登陆的时候,将用户输入的密码进行hash操作后与数据库里保存的密码hash值进行对比。4, 如果hash值完全一样,则
认为用户输入的密码是正确的。否则就认为用户输入了无效的密码。5, 每次用户尝试登陆的时候就重复步骤3和步骤4。在步骤4的时候不要告诉用户是账号还是密码错了。只需要显示一个通用的提示,比如账号或密码不正确就可以了。这样可以
防止攻击者枚举有效的用户名。还需要注意的是用来保护密码的hash函数跟数据结构课上见过的hash函数不完全一样。比如实现hash表的hash函数设计的目的是快速,但是不够安全。只有加密hash函数(cryptographic hash functions)可以用来进行密码的hash。这样的函数有SHA256, SH
A512, RipeMD, WHIRLPOOL等。一个常见的观念就是密码经过hash之后存储就安全了。这显然是不正确的。有很多方式可以快速的从hash恢复明文的密码。还记得那些md5破解网站吧,只需要提交一个hash,不到一秒钟就能知道结果。显然,单纯的对密码进行hash还是远远达不到我们的安全需求。下一部分先讨论一下破解密码hash,
获取明文常见的手段。 1 2 3 4 5 6 7 8 9 10 11 12 下一页>>查看全文 内容导航第 1 页:什么是hash 第 2 页:如何破解hash 第 3 页:加盐(Adding Salt) 第 4 页:双重hash和古怪的hash函数 第 5 页:如何恰当的进行hash 第 6 页:使用加密的key和密码hash硬件 第 7 页:经常提问的问题 第 8 页:slowequals函数怎么工作 第 9 页:PHP PBKDF2 密码hash代码 第 10 页:java PBKDF2 密码hash代码 第 11 页:ASP.NET (C#)密码hash代码 第 12 页:Ruby (on Rails) 密码hash代码 原文:如何安全的存储用户的密码(1) 返回网络安全首页
如何安全的存储用户的密码(1)
时间: 2024-11-10 01:15:59
如何安全的存储用户的密码(1)的相关文章
Android端用户的密码保存在preference 安全吗
问题描述 Android端用户的密码保存在preference 安全吗 解决方案 用户名密码,存在本地的话怎么都行.这个看个人爱好,重要的是帐号的安全性.注册的时候检查帐号是否存在,这个东西应该是通过api与服务进行通信.解决方案二:> forum.php?mod=redirect&goto=findpost&pid=2414&ptid=1051用户名密码,存在本地的话怎么都行.这个看个人爱好,重要的是帐号的安全性.注册的时候检查帐号是否存在 ...存在本地的话,手机丢失,那
路透社:eBay遭黑客攻击 督促1.45亿用户修改密码
据路透社报道,eBay周三表示,3个月前对其发动的http://www.aliyun.com/zixun/aggregation/10370.html">网络攻击已经威胁到客户的数据安全,该公司督促1.45亿用户修改密码.今年2月底至3月初,eBay遭到神秘黑客的攻击,用户的电邮地址.密码.生日和其他信息被盗. eBay的女发言人称,很多帐号可能处于危险中,但拒绝透露这些帐号具体有多少.该公司表示,没有证据显示有人在未经授权情况下访问了PayPal支付公司的金融或信用卡信息,因为这些信息是
IOS开发使用KeychainItemWrapper 持久存储用户名和密码_IOS
首先从官网下载 KeychainItemWrapper.h KeychainItemWrapper.m 将这两个文件导入项目中 不过该文件是手动释放的 所以要使用这个文件需要先做一些处理: 如果要使用KeychainItemWrapper.h类 在CompileSources中选中该类 添加-fno-objc-arc 接下来直接上代码: KeychainItemWrapper *keychain=[[KeychainItemWrapper alloc] initWithIdentifier:@"
eBay 遭黑客攻击 督促 1.45 亿用户修改密码
5月22日消息,据路透社报道,eBay周三表示,3个月前对其发动的网络攻击已经威胁到客户的数据安全,该公司督促1.45亿用户修改密码.今年2月底至3月初,eBay遭到神秘黑客的攻击,用户的电邮地址.密码.生日和其他信息被盗. eBay的女发言人称,很多帐号可能处于危险中,但拒绝透露这些帐号具体有多少.该公司表示,没有证据显示有人在未经授权情况下访问了PayPal支付公司的金融或信用卡信息,因为这些信息是另外加密存储的.周三下午,eBay股价跌0.2%. 网 络安全专家建议,eBay客户应对欺诈保
eBay遭遇黑客攻击 要求所有用户更改密码
摘要: eBay 因遭遇网络攻击,而要求所有用户更改密码.eBay声称,此次黑客攻击使得用户的密码和其他非金融数据陷入了危险. 据称,黑客假借eBay员工的身份,非法进入了eBay的公司网络,并 eBay因遭遇网络攻击,而要求所有用户更改密码.eBay声称,此次黑客攻击使得用户的密码和其他非金融数据陷入了危险. 据称,黑客假借eBay员工的身份,非法进入了eBay的公司网络,并进入了一个存储客户姓名.密码.邮件地址.家庭住址.电话号码和出生日期等信息的数据库.不过,此数据并不包含用户财务相关的信
net-登陆密码错误 数据库里的用户和密码明明都是对的 怎么破怎么破 跪求大神帮助
问题描述 登陆密码错误 数据库里的用户和密码明明都是对的 怎么破怎么破 跪求大神帮助 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Web.Bll; using Web.Mod; public partial class _Default : System
asp.net-登陆密码错误 数据库里的用户和密码明明都是对的 怎么破怎么破 跪求大神帮助
问题描述 登陆密码错误 数据库里的用户和密码明明都是对的 怎么破怎么破 跪求大神帮助 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="login.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu
如何重设MYSQL数据库ROOT用户的密码
一.在已知MYSQL数据库的ROOT用户密码的情况下,修改密码的方法: 1.在SHELL环境下,使用mysqladmin命令设置:mysqladmin –u root –p password "新密码" 回车后要求输入旧密码 2.在mysql>环境中,使用update命令,直接更新mysql库user表的数据: Update mysql.user set password=password('新密码') where user='root'; flush privi
团购王csrf可劫持用户修改密码
修改密码处无验证token,并且无验证原密码(一个涉及money的站,修改密码居然没有验证原密码!!!),可以通过一个精心构造的表单欺骗用户修改密码. <html> <body> <form name="csrf" action="http://www.go.cn/index.php?m=settings" method="POST"> <input type=text name=pass