前段时间XcodeGhost余波未了,所以所有开发者不得不重新审视开发工具的安全性。
相关新闻
有关Xcodeghost的问题和解答
Validating Your Version of Xcode
根据上面两篇文章,苹果官方的方法比较封闭,是建议你开启Mac中的Gatekeeper程序进行校验。
但比较通用的做法是校验文件的MD5、SHA-1、CRC32这些值,一般来说每一个文件对应的这些值是唯一的,但是根据抽屉原理,确实有出现碰撞的可能性。
Windows下比较著名的校验程序hash下载:http://keir.net/download/hash.zip (下载页:http://www.keir.net/hash.html)
hash的最后一次更新是在2006年,最后一个版本是1.04修复了超过4GB文件的错误。
下面以tomcat为例校验tomcat的完整性。
进入tomcat8.0的下载页面:http://tomcat.apache.org/download-80.cgi
下载图中的zip文件后,再点击后面的md5链接和sha1链接
md5
sha1
然后我们打开hash
点击browser找到刚才下载的文件,点击打开
如果文件比较小,可以立刻看到结果
可以看到MD5和SHA1与上面结果一致,可以确信文件没有问题。
但需要注意的是,MD5的安全性不如SHA1,目前已经有程序可以在原文件后填充垃圾字符使得两个文件MD5文件一致,也有出现MD5相同,但在控制台打印不同字符的程序。所以一般情况下建议优先使用SHA1校验或者多个校验手段结合。
再来看看JDK和Oracle数据库文件的校验,由于Oracle的文件通常采用linux的命令校验,通常这些命令在windows下默认是没有的,这里有个两工具可以在windows下实现这个功能
JDK提供sha256和md5校验值,Oracle数据库提供的是cksum校验值
shasum下载地址:http://www.nfllab.com/sums/sums.zip
UnxUtils下载地址:http://sourceforge.net/projects/unxutils/ (可能无法直接访问)
下面以UnxUtils安装为例,shasum的安装类似
下载完成后解压,笔者解压到了到UnxUtils文件夹
依次打开usr\local\wbin文件夹,可以看到这里有个cksum.exe,然后我们把文件路径复制下来
然后添加到环境变量,win10是此电脑-->右键属性-->高级系统设置-->高级-->环境变量,找到系统变量的path,双击编辑,然后按Home键到最前面,粘贴刚才复制的路径,然后加个英文分号;最后就是点几次确定
然后我们检验以下cksum命令,win+R,输入cmd回车,在命令行输入
cksum --help
回车之后可以看到cksum的使用方法
Microsoft Windows [版本 10.0.10240]
(c) 2015 Microsoft Corporation. All rights reserved.
C:\Users\LENOVO>cksum --help
Usage: cksum [OPTION]... [FILE]...
Print CRC checksum and byte counts of each FILE.
--help display this help and exit
--version output version information and exit
Report bugs to .
C:\Users\LENOVO>
shasum的结果
C:\Users\LENOVO>sha256sum --help
Usage: sha256sum [OPTION] [FILE]...
Print or check SHA256 (256-bit) checksums.
With no FILE, or when FILE is -, read standard input.
-b, --binary read in binary mode (default unless reading tty stdin)
-c, --check read SHA256 sums from the FILEs and check them
-t, --text read in text mode (default if reading tty stdin)
The following two options are useful only when verifying checksums:
--status don't output anything, status code shows success
-w, --warn warn about improperly formatted checksum lines
--help display this help and exit
--version output version information and exit
The sums are computed as described in FIPS-180-2. When checking, the input
should be a former output of this program. The default mode is to print
a line with checksum, a character indicating type (`*' for binary, ` ' for
text), and name for each FILE.
Report bugs to .
下面我们下载JDK
Checksum页面
校验结果
可以看到MD5结果一致,但md5一致可信度并不高
下面我们用命令来看一下结果
Microsoft Windows [版本 10.0.10240]
(c) 2015 Microsoft Corporation. All rights reserved.
C:\Users\LENOVO>md5sum H:\开发工具\JDK\jdk-8u60-windows-i586.exe
\0936c6d4d7643e2df69abdade59b14ea *H:\\\\JDK\\jdk-8u60-windows-i586.exe
md5sum: write error
C:\Users\LENOVO>sha256sum H:\开发工具\JDK\jdk-8u60-windows-i586.exe
\2c2eb85ca8db7853cf3a0b074268a4e9095b0126e9e5a3c4b57d030053b99061 *H:\\\\JDK\\jdk-8u60-windows-i586.exe
sha256sum: write error
C:\Users\LENOVO>
可以看到sha256和md5的值一致,可以确信下载是正确的
关于Oracle数据库安装包的校验,以前写过一篇:在windows下校验Oracle数据库安装包的完整性
Oracle数据库只提供了cksum校验码,所以需要使用UnxUtils
Oracle数据库官方下载地址:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html
Oracle12c的校验码:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/database12c-win64-download-1968077.html
那么官方如果没有提供校验值,该如何判断呢?通常的做法是比较文件大小与官方描述是否符合,尽量从官方下载,从其它渠道下载时多下载几次比对文件是否一致,使用工具监测软件行为等等。