户外

安全存储密码:Hashing 还是加密?

一篇很不错的进行加密的文章!from: http://www.oschina.net/news/52976/hashing-or-encrypt对于网站来说, 再没有什么比用户信息泄露更让人尴尬的了。 尤其是当存有用户密码的文件如果被黑客获取, 对网站的安全和用户的信心来说都是巨大的打击。 如最近的Ebay泄密事件和小米的用户数据泄露事件。 保证用户信息安全首先需要正确理解对于用户密码的安全控制和保护。 这里OWASP的主席Michael Coates最近的一篇关于一些基本概念的介绍能够帮助开发人员更好的理解现代Hashing算法和加密对于用户密码保护的作用。 安全牛编译如下:在过去几个月, 我们看到了一些严重的数据泄露事件, Ebay和Adobe的数据泄露事件影响了几百万用户。 Snapchat也遭受到了数据泄露事件的影响。 每一次密码泄露事件后, 人们都会问同一个问题, 这些密码的存储是不是安全? 不幸的是, 这个看上去简单的问题其实并不好回答。尽管在很多情况下, Hashing和加密都能够满足安全存储的需要, 对于在线应用而言, 很多情况下, 对于用户密码的安全存储往往只有一种正确的方案。 Hashing.是通过一个不可逆的杂凑函数计算出一个Hash值, 而通过这个值无法逆向计算出输入值(比如用户密码)。 对称加密则是采用密钥进行加密计算, 这是一种可逆的运算。  任何人如果有了密钥, 就能够解密出原始明文。下表是Hashing和对称加密的对比Hashing对称加密不可逆函数可逆运算能够逆向算出初始值不能可以对于现代杂凑算法而言, 从Hash值逆向算出输入值非常困难。 参见下面关于彩虹表,盐化等的讨论对称加密就是设计来是的任何拥有密钥的人能够解密出原始明文其他需要考虑的方面杂凑算法的选择加密算法的选择对每个用户进行盐化保护密钥显示第 1 至 6 项结果,共 6 项当在线应用收到一个用户名和一个密码后, 就以密码为输入到杂凑函数中去得出一个Hash值, 然后用这个Hash值与数据库中存储的该用户的密码Hash值做比较, 如果两个Hash值相同, 就可以认为用户提供了有效的用户名和密码。 采用Hashing的好处是, 应用不需要存储用户的明文密码, 只需要存储Hash值。在线应用如何利用密码的Hash值来认证用户下图就是关于采用Hashing方式的简单描述:那么, 所有杂凑算法都能用吗? 不是的, 事实上, 杂凑算法中不同的算法的差别很大, 并不是所有的杂凑算法都适合存储密码。说起来可能有点出人预料, 早期的杂凑算法速度过快, 黑客们尽管不能通过Hash值逆向计算出原输入值, 但是黑客们可以通过暴力破解的方式遍历所有可能的密码组合来尝试能够能够“碰撞”到用户密码的Hash值。 为了避免这种威胁, 现代的杂凑算法能够通过多重迭代, 使得在每次Hash计算时产生一些延时, 对单次Hash计算, 这样的延时基本没有任何影响, 而对于黑客的暴力破解来说, 几百万次计算的延时能够被放大几百年, 这样到使得暴力破解基本不现实的地步。在Hashing中, 最好采用针对每个用户的盐化方式, 通过对用户密码添加一个随机字符串(随机字符串可以是显式存储), 这样可以相同的密码产生相同的Hash值, 这样, 攻击者可以下载一个巨大的存有事先计算好Hash值的查找表, 也叫做彩虹表。 通过Hash值, 反向查找对应的输入值。而通过下面两个表格可以看出, 通过对不同用户进行不同的盐化, 同样的密码就会出现不同的Hash值, 这样使得攻击者利用彩虹表进行攻击变得困难。没有盐化用户名密码Hash值Joepassword123xyfkdl323...Suepassword123xyfkdl323...**盐化后**用户名密码盐化字符串Hash值Joepassword12348a023jl2…ied390fl2...Suepassword1239fh3ls321…40akdl23…**类似于账户锁定的机制对于密码存储的模式有什么影响吗?**简单的回答, 就是, 没有影响。 对密码的安全存储是为了提供在密码文件被盗取后的防护。 黑客对于密码Hash的攻击是一种离线攻击。 也就是说, 密码文件已经被盗取, 黑客可以利用自己的计算机通过尝试不同的密码来找出密码。 由于是离线攻击, 账号锁定或者验证码之类的安全机制已经没有作用了。 这些机制只有在针对网站服务器的在线登录页面攻击时才会起作用。对于密码存储, 采用对称加密而不是Hashing的风险在哪里?对称加密的设计就是一个可逆的运算, 这意味着在线应用必须能够访问到密钥, 并且在每次密码验证时都要使用。 如果加密后的密码被窃取的话, 黑客需要获取对称加密的密钥, 而一旦密钥被破解出来, 不管是通过某种方式泄露出来, 或者一些弱的密钥被暴力方式破解出来, 所有的密码都会被黑客获得。总结对于密码的安全存储来说, 理解对称加密与Hashing的区别非常重要。 一些如PBKDF2, bcrypt以及scrypt等算法都采用的每用户盐化以及多重迭代的Hashing方式以安全存储密码。互联网已经日益成为重要的用户信息存储的场所。 网站开发人员及网站老板们需要尽其所能地保证用户信息的安全。 了解如何利用现代的Hashing算法对用户密码进行基本的安全控制保护非常重要。

程序猿学黑客 · Java WEB 安全系列课程

from: http://zhuanlan.zhihu.com/wooyun/19747591作者:园长 (@mm yz)攻击JavaWeb应用[1]-JavaEE 基础攻击JavaWeb应用[2]-CS交互安全攻击JavaWeb应用[3]-SQL注入[1]攻击JavaWeb应用[4]-SQL注入[2]攻击JavaWeb应用[5]-MVC安全攻击JavaWeb应用[6]-程序架构与代码审计攻击JavaWeb应用[7]-Server篇[1]攻击JavaWeb应用[8]-后门篇攻击JavaWeb应用[9]-Server篇[2]

西安-大雁塔20121201

[AFG_gallery id=’1’]

jnote开源笔记软件

整理了下做的一个笔记软件,以开放开源的态度做的.jnote是一个开源的笔记软件,类似于Evernote,wiz,麦库,界面也是参考他们做的.当初做只是为了做一个自己可以定制的笔记软件.目前完成的功能:1.新建日记,参考wiz的日记功能,这个功能很实用,可以按照年月分类.2.新建笔记,是一个笔记软件最基本的功能.3.编辑支持高级html编辑器 简单html编辑器 markdown编辑器4.分类支持无限级分类5.简单搜索6.缩小到托盘7.支持多标签8.支持笔记阅读模式9.阅读模式是可以和wiz一样,定义阅读的主题.以后的计划1.添加标签功能2.添加附件功能3.搜索功能加强,计划采用lucene,使用OSChina 网站的全文搜索框架源码做了测试,完成可以使用.4.同步,在选择上面,测试过dropbox的api,计划使用dropbox.5.和evernote 有道 麦库打通api接口,这个还没有测试过,evernote应该是首选.6.用户登录,头像…7.跨平台8…….目前存在的问题1.笔记字数,使用sqlite数据库,存储的文字多少还存在考量.2.编辑器还不完美,编辑器的切换还对笔记的格式存在转换问题.3.内嵌浏览器的问题,这个是java的硬伤,目前使用IE内核,Webkit 由于不支持linux就放弃了,打算使用JF X的内嵌浏览器来实现,提高性能和解决跨平台的问题.4……采用的技术1.界面使用BeautyEye,界面很漂亮2.nutzDao,小巧灵活.3.数据库使用sqlite,4.编辑器使用ueditor wysihtml5 pagedown做笔记软件真不容易,特别还是用java来做.在13年3月份差不多已经这个样子了,之后在忙其他事情,有时间就会继续完善的.看几张截图来看看.项目地址:http://git.oschina.net/imzhpe/jnote

4年的技术总结

前言也做了4年的技术了,这两天刚把4年来的技术也总结下了.这两年对前端有点兴趣,被前端这些花花绿绿的新奇玩意给吸引着,前端的世界很美好!每天总有着好玩意出来,好玩意多了,眼就花了,就和见姑娘一样,姑娘见多了,你也就眼花了,别等着下一个会更好了,其实眼前的就是最好的了.这两天公司在做些调整,我也整理下了自己.总结步骤第一步就是坚定自己的目标,这得感谢下三点水童鞋,帮忙分析了好多,再次感谢啊!第二步根据当前的情况,整理了下自己的技术,将技术大概分为前端和后端,从这两年来伪前端经历,前端更新速度极快,好东西太多,没那么多的时间去掌握学习和实践,后端,发展也挺快的,对于前端来说,后端技术更稳定些,目前掌握的前端也足够应付实际中的需要,决定之后的走后端技术.之后还有第三步 第四步的,分下一篇再说,这次主要说技术.技术图做了张图,看的清楚些. 使用的是下面的制作方法,原文网址:http://li3huo.com/index.php/2012/01/method-of-making-programmer-skills-mind-map/还有个英文的网址,现在已经打不开了.技能脑图的制作方法1. 用MESE列举并归类专业技能MESE就是“彼此独立,绝无遗漏”。也就是尽量做到把技能仅分配到一个分类下面。做到不重叠不遗漏的分类是很困难的,原文作者给出的计算机科学、工具系统、方法论和模式、编程技术的分类方式很清晰,如果没有更好的分法,建议沿用这个就可以了。2. 用Dreyfus模型为技能打分作者提出的打分方式和简单,技能打分为1到5: 1分就是了解,但是没有实际操作过;5分就是非常熟练的掌握。这样打分很难量化的,建议采用Dreyfus Model:1. 新手新手需要指令清单新手不是特别想要学习,他们只是想实现一个立竿见影的目标他们不知道如何应付错误,所以出错的时候,他们非常容易慌乱2. 高级新手高级新手能够根据过去的经验,逐步在正确的情境中采纳建议,但比较吃力高级新手不想要全局思维3. 胜任胜任者能够解决问题他们的工作更多是基于谨慎的计划和过去的经验开始承担一定的领导角色,并充当指导人在这个阶段的人,有时会把握不住解决问题需要关注哪些细节4. 精通他们可以通过Case Study或从专家身上学到东西,而之前阶段是做不到的精通水平的从业者具有全局思维,他们会主动获取围绕这个技术的概念框架精通者能够应用准确应用通用规则5. 专家专家凭直觉工作他们总是不断地寻找更好的方法和方式去做事他们有丰富的经验,可以在恰当的情境中选取和应用这些经验

点点转WP工具

dd2wp点点网转到wordpress的工具,通过wordpress提供的RSS接口进行导入。点点网导出的数据不包含标签、评论,所以,没有办法。部分的数据丢失了!用java来做的,界面如下图,需要jre的环境来执行。也可以发邮件【user.zhaopeng#qq.com】,我帮你转。代码已经开源在github上面了,关键的在Convert.java文件中。 发布地址:http://beardnote.com/?p=732开源地址:https://github.com/dapengme/dd2wp下载地址:https://raw.github.com/dapengme/dd2wp/master/dd2wp.jar

google reader请愿地址

早上弹出了一个框,就被告知google reader要被下线了,国外发起了请愿,喜欢使用google reader去请愿吧! 希望google reader能保留下! 请愿地址:http://keepgooglereader.com

多个WEB页面设计经验-如何使专题显得精致细腻

多个WEB页面设计经验-如何使专题显得精致细腻

多个WEB页面设计经验-10钟不同类型的移动UI设计模式

多个WEB页面设计经验-10钟不同类型的移动UI设计模式

多个WEB页面设计经验-移动端APP设计指南

移动端APP设计指南