尽管业界已经达成共识,在传输用户password等须要保密的信息时,尽可能採用HTTPS/SSL协议传输。

但我们还是能够看到少数没实用HTTPS/SSL加密的站点或应用。

新浪微博的登录页面和MySQL是两个样例。接下来我们具体分析它们的password传输和保存机制。

步在计算token的过程中,须要对password作一次SHA1加密的哈希值。而在mysql.user表中。仅仅有对password作两次SHA1的哈希值。

破解方法

尽管MySQL的机制比新浪微博的要安全一些,但它仍然存在安全隐患。这个机制的短板在于password的存储。存储password的两次SHA1算法的哈希值并不能有效防止彩虹表法破解。

非常多黑客手上都有SHA1算法哈希值的彩虹表。他们仅仅要把这种彩虹表里的哈希值再作一次SHA1加密就能够了。

MySQL採用这个机制也能够理解。

假设黑客能够侵入mysql.user表格。那么他自然也能侵入MySQL数据库中的其它表格。

通常黑客破解的password的目的是盗取他人的数据。也就是黑客一旦侵入了mysql.user表格,那么他无需破解password也就能盗取数据了。

MySQL採用上述password保护机制有它的理由。其它系统假设也採用同样的机制,就要细致考虑当中的安全隐患了。

小结

一个系统的password保护机制是否安全取决于两个方面,即password传输的安全性和password存储的安全性。新浪微博和MySQL都没有採用HTTPS/SSL传输password。为了防止黑客在password传输过程中窃听password。它们仅仅能在传输过程中加盐然后用SHA1算法加密。因为password在传输过程中须要加盐,为了能够正常验证password,因此在存储password时仅仅能存储没有加盐的SHA1算法的哈希值。

因此password的存储成为整个机制的短板。

笔者曾写过一篇博客讨论怎样安全地存储password。感兴趣的读者请參考http://blog.csdn.net/cadcisdhht/article/details/19282407

我们没有必要在抛弃HTTPS/SSL的前提下试图去设计更加复杂的加密算法或者通讯协议。上述提到的两个方案是新浪微博和MySQL的程序猿们花了大量精力设计出来的机制,尚且还有明显的漏洞。我不觉得每一个程序猿都有自信说自己比新浪微博或者MySQL的程序猿更加优秀。

HTTPS/SSL在传输过程中用证书加密。不须要加盐来提高传输的安全性。这样在存储password的时候就能够採用加盐的机制,比方简单地採用加盐的SHA1算法。也能够採用Bcrypt或者PBKDF2。如此以来,在password的传输和存储两个环节都取得非常好的安全性。

假设安全性对一个系统是至关重要的因素,那么就採用HTTPS/SSL吧。

尽管部署HTTPS/SSL的系统有些麻烦,申请可信赖的CA的证书还要花钱,但和安全漏洞的潜在风险相比这些代价还是值得的。



从新浪微博和MySQL的password保护机制谈HTTPS/SSL的必要性的更多相关文章

  1. 【MySQL】InnoDB日志机制深入分析

    版权声明:尊重博主劳动成果,欢迎转载,转载请注明出处 --爱技术的华仔 Log & Checkpoint Innodb的事务日志是指Redo log,简称Log,保存在日志文件ib_logfi ...

  2. 【mysql】关于checkpoint机制

    一.简介 思考一下这个场景:如果重做日志可以无限地增大,同时缓冲池也足够大,那么是不需要将缓冲池中页的新版本刷新回磁盘.因为当发生宕机时,完全可以通过重做日志来恢复整个数据库系统中的数据到宕机发生的时 ...

  3. Mysql 的字符编码机制、中文乱码问题及解决方案【转载】

    本文转载自:http://hi.baidu.com/huabinyin/item/7f51e462df565c97c4d24929.感谢作者及相关博主.        相信很多朋友都会对字符编码敬而远 ...

  4. 逆向工程学习第四天--Windows栈溢出保护机制(GS)原理及绕过测试

    GS简介: Windows的缓冲区安全监测机制(GS)可以有效的阻止经典的BOF攻击,因为GS会在函数调用前往函数栈帧内压入一个随机数(canary),然后等函数返回前,会对canary进行核查,判断 ...

  5. Linux - Reset a MySQL root password

    Use the following steps to reset a MySQL root password by using the command line interface. Stop the ...

  6. 巧用MySQL InnoDB引擎锁机制解决死锁问题(转)

    该文会通过一个实际例子中的死锁问题的解决过程,进一步解释innodb的行锁机制 最近,在项目开发过程中,碰到了数据库死锁问题,在解决问题的过程中,笔者对MySQL InnoDB引擎锁机制的理解逐步加深 ...

  7. Linux常用保护机制

    Linux程序常见用的一些保护机制 一.NX(Windows中的DEP) NX:No-eXecute.DEP:Data Execute Prevention 也就是数据不可执行,防止因为程序运行出现溢 ...

  8. Hystrix针对不可用服务的保护机制以及引入缓存

    之前我写过一篇博文,通过案例了解Hystrix的各种基本使用方式,在这篇文章里,我们是通过Hystrix调用正常工作的服务,也就是说,Hytrix的保护机制并没有起作用,这里我们将在HystrixPr ...

  9. linux程序的常用保护机制

    操作系统提供了许多安全机制来尝试降低或阻止缓冲区溢出攻击带来的安全风险,包括DEP.ASLR等.在编写漏洞利用代码的时候,需要特别注意目标进程是否开启了DEP(Linux下对应NX).ASLR(Lin ...

随机推荐

  1. (转)WKT转换工具terraformers

    http://blog.csdn.net/gisshixisheng/article/details/53150111 概述: 前面的文章中,提到了Arcgis中实现wkt转换为geometry,但是 ...

  2. CAD在网页中绘图,并为新绘的对象写扩展数据和读取扩展数据

    在网页中绘图,并为新绘的对象写扩展数据和读取扩展数据.下面帮助的完整例子,在控件安装目录的 Sample\Ie\iedemo.htm 中. 主要用到函数说明: _DMxDrawX::InsertBlo ...

  3. vue基础---列表渲染

    首先简单回顾下v-for‘指令 <ol id="list_area"> <li v-for="book in books">{{book ...

  4. Java编辑编译及运行环境

    Java编辑编译及运行环境 Microsoft Windows 编辑工具 EditPlus JDK JDK(Java Development Kit,Java开发工具包)安装JDK之后,其中bin文件 ...

  5. contab的使用方法

    linux 系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另 外, 由于使用者自己也可以设置计划任务,所以, ...

  6. [转载] kprobe原理解析(一)

    From: https://www.cnblogs.com/honpey/p/4575928.html kprobe原理解析(一) kprobe是linux内核的一个重要特性,是一个轻量级的内核调试工 ...

  7. C++ map使用总结

    0. Backgroud 此文章源于博主(sunshinewave),转到自己博客以后方便查看 map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次, ...

  8. Python学习-字符串函数操作1

    字符串的函数操作 capitalize():可以将字符串首字母变为大写 返回值:首字符大写后的新字符串 str = "liu" print(str.capitalize()); / ...

  9. java解析从接口获取的json内容并写到excle(只写与标题匹配的值,并非把所有的接口返回值都写进去)

    需求:从接口中获取的一个json数组中有多个对象,每个对象中的值并非都需要,只需查出标题中的几项对应的值即可.且还需要按某个字段排序后依次写到excel 实现方法如下: package jansonD ...

  10. Java第九周总结