彩票走势图

hash算法是否有效的保护Web用户密码?

原创|行业资讯|编辑:龚雪|2014-06-19 09:32:50.000|阅读 143 次

概述:hash算法在一定程度上对Web用户的密码存储安全非常有效,但还远远达不到安全需求。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

大多数的web开发者都会遇到设计用户账号系统的需求。账号系统最重要的一个方面就是如何保护用户的密码。

Hash算法是一种单向的函数。它可以把任意数量的数据转换成固定长度的“指纹”,这个过程是不可逆的。而且只要输入发生改变,哪怕只有一个bit,输出 的hash值也会有很大不同。这种特性恰好合适用来用来保存密码。因为我们希望使用一种不可逆的算法来加密保存的密码,同时又需要在用户登陆的时候验证密码是否正确。

举例:

hash("hello")=2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

hash("hbllo")=58756879c05c68dfac9866712fad6a93f8146f337a69afe7dd238f3364946366

hash("waltz")=c0e81794384491161f1777c232bc6bd9ec38f616560b120fda8e90f383853542

在一个使用hash的账号系统中,用户注册和认证的大致流程如下:

  1. 用户创建自己的账号 
  2. 用户密码经过hash操作之后存储在数据库中。没有任何明文的密码存储在服务器的硬盘上。 
  3. 用户登陆的时候,将用户输入的密码进行hash操作后与数据库里保存的密码hash值进行对比。 
  4. 如果hash值完全一样,则认为用户输入的密码是正确的。否则就认为用户输入了无效的密码。 
  5. 每次用户尝试登陆的时候就重复步骤3和步骤4。

在步骤4的时候不要告诉用户是账号还是密码错了。只需要显示一个通用的提示,比如账号或密码不正确就可以了。这样可以防止攻击者枚举有效的用户名。

还需要注意的是用来保护密码的hash函数跟数据结构课上见过的hash函数不完全一样。比如实现hash表的hash函数设计的目的是快速,但是不够安 全。只有加密hash函数(cryptographic hash functions)可以用来进行密码的hash。这样的函数有SHA256, SHA512, RipeMD, WHIRLPOOL等。

一个常见的观念就是密码经过hash之后存储就安全了。这显然是不正确的。有很多方式可以快速的从hash恢复明文的密码。还记得那些md5破解网站吧,只需要提交一个hash,不到一秒钟就能知道结果。显然,单纯的对密码进行hash还是远远达不到安全需求。慧都提供网络安全技术资源,或许能助Web开发者一臂之力。

通信安全工具:

IP*Works! Internet Toolkit v9.0

IP*Works! EDI/AS2 v9.0

IP*Works! S/MIME v9.0      IP*Works! SSH      IP*Works! SSL

代码混淆工具:

.NET Reactor v4.9     Dotfuscator     DashO Pro v7.3

Zend Guard


标签:网络安全Web开发

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关产品
IP*Works! Internet Toolkit

最优化的网络通讯组件包,包含电子邮件、网络管理、文件传送、telnet、 HTTP等功能

IPWorks SSL

为桌面或网络应用程序加入安全连接功能

IPWorks S/MIME

为邮件、文件、新闻组文章提供S/MIME安全的组件

IPWorks Zip

为桌面和网上应用程序添加压缩和解压功能的组件套包。

EDI Integrator

用于收发基于AS2的Internet电子数据交换(EDI-INT)信息,实现Internet上EDI交易的安全传输。

扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP