当前位置:首页 > 系统运维 > 正文内容

MySQL 加密函数对Web敏感数据的保护

a8116255316年前 (2010-05-14)系统运维12

以下的文章主要介绍的是利用MySQL 加密函数对Web网站的某些敏感数据进行保护的实际操作步骤,如果你现在正在使用的是MySQL(和PHP搭配之更佳组合)的Web实际应用程序,那么它把密码或者其他敏感信息保存在应用程序里的机会就很大。

保护这些数据免受黑客或者窥探者的获取是一个令人关注的重要问题,因为您既不能让未经授权的人员使用或者破坏应用程序,同时还要保证您的竞争优势。

幸运的是,MySQL(和PHP搭配之更佳组合)带有很多设计用来提供这种类型安全的MySQL加密函数。该篇文章概述了其中的一些函数,并说明了如何使用它们,以及它们能够提供的不同级别的安全。

双向加密

就让我们从最简单的加密开始:双向加密。在这里,一段数据通过一个密钥被加密,只能够由知道这个密钥的人来解密。MySQL(和PHP搭配之更佳组合)有两个函数来支持这种类型的加密,分别叫做ENCODE()和DECODE()。下面是一个简单的实例:

MySQL(和PHP搭配之更佳组合)> INSERT INTO users (username, password) VALUES ('joe', ENCODE('gues *** e', 'abracadabra'));  Query OK, 1 row affected (0.14 sec) 

其中,Joe的密码是gues *** e,它通过密钥abracadabra被加密。要注意的是,加密完的结果是一个二进制字符串,如下所示:

MySQL(和PHP搭配之更佳组合)> SELECT * FROM users WHERE username='joe';  +----------+----------+  | username | password |  +----------+----------+  | joe | ¡ i !  |  +----------+----------+  1 row in set (0.02 sec) 

abracadabra这个密钥对于恢复到原始的字符串至关重要。这个密钥必须被传递给DECODE()MySQL加密函数,以获得原始的、未加密的密码。下面就是它的使用 *** :

MySQL(和PHP搭配之更佳组合)> SELECT DECODE(password, 'abracadabra') FROM users WHERE username='joe';  +---------------------------------+  | DECODE(password, 'abracadabra') |  +---------------------------------+  | gues *** e |  +---------------------------------+  1 row in set (0.00 sec) 

应该很容易就看到它在Web应用程序里是如何运行的——在验证用户登录的时候,DECODE()会用网站专用的密钥解开保存在数据库里的密码,并和用户输入的内容进行对比。假设您把PHP用作自己的脚本语言,那么可以像下面这样进行查询:

$query = "SELECT COUNT(*) FROM users WHERE username='$inputUser' AND DECODE(password, 'abracadabra') = '$inputPass'"; > 

提示:虽然ENCODE()和DECODE()这两个函数能够满足大多数的要求,但是有的时候您希望使用强度更高的加密手段。在这种情况下,您可以使用aes_ENCRYPT()和AES_DECRYPT()函数,它们的工作方式是相同的,但是加密强度更高。

单向加密

单向加密与双向加密不同,一旦数据被加密就没有办法颠倒这一过程。因此密码的验证包括对用户输入内容的重新加密,并将它与保存的密文进行比对,看是否匹配。一种简单的单向加密方式是MD5校验码。MySQL(和PHP搭配之更佳组合)的MD5()函数会为您的数据创建一个“指纹”并将它保存起来,供验证测试使用。下面就是如何使用它的一个简单例子:

MySQL(和PHP搭配之更佳组合)> INSERT INTO users (username, password) VALUES ('joe', MD5('gues *** e'));  Query OK, 1 row affected (0.00 sec)  MySQL(和PHP搭配之更佳组合)> SELECT * FROM users WHERE username='joe';  +----------+----------------------------------+  | username | password |  +----------+----------------------------------+  | joe | 81a58e89df1f34c5487568e17327a219 |  +----------+----------------------------------+  1 row in set (0.02 sec) 

现在您可以测试用户输入的内容是否与已经保存的密码匹配, *** 是取得用户输入密码的MD5校验码,并将它与已经保存的密码进行比对,就像下面这样:

MySQL(和PHP搭配之更佳组合)> SELECT COUNT(*) FROM users WHERE username='joe' AND password=MD5('gues *** e');  +----------+  | COUNT(*) |  +----------+  |1 |  +----------+  1 row in set (0.00 sec) 

或者,您考虑一下使用ENCRYPT()函数,它使用系统底层的crypt()系统调用来完成加密。这个MySQL加密函数有两个参数:一个是要被加密的字符串,另一个是双(或者多)字符的“salt”。它然后会用salt加密字符串;这个salt然后可以被用来再次加密用户输入的内容,并将它与先前加密的字符串进行比对。下面一个例子说明了如何使用它:

MySQL(和PHP搭配之更佳组合)> INSERT INTO users (username, password) VALUES ('joe', ENCRYPT('gues *** e', 'ab'));  Query OK, 1 row affected (0.00 sec)  MySQL(和PHP搭配之更佳组合)> SELECT * FROM users WHERE username='joe';  +----------+---------------+  | username | password |  +----------+---------------+  | joe | ab/G8gtZdMwak |  +----------+---------------+  1 row in set (0.00 sec) 

结果是

MySQL(和PHP搭配之更佳组合)> SELECT COUNT(*) FROM users WHERE username='joe' AND password=ENCRYPT('gues *** e', 'ab');  +----------+  | COUNT(*) |  +----------+  |1 |  +----------+  1 row in set (0.00 sec)  

提示:ENCRYPT()只能用在*NIX系统上,因为它需要用到底层的crypt()库。

幸运的是,上面的例子说明了能够如何利用MySQL(和PHP搭配之更佳组合)对您的数据进行单向和双向的加密,并告诉了您一些关于如何保护数据库和其他敏感数据库信息安全的理念。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/20254.html

分享给朋友:

“MySQL 加密函数对Web敏感数据的保护” 的相关文章

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

故障现象: Windows 7酷狗软件无声音,系统声音正常。 原因分析: 1. 查看酷狗软件设置 2. 查看系统设置 解决方案: 1. Windows 7操作方法 如图:查看是否处于禁音状态   Windows 7系统声音正常酷狗音乐无声音 2. 查看设置音频输出是否...

windows 7系统开机后出现黑屏提示Windows无法启动

windows 7系统开机后出现黑屏提示Windows无法启动

一些用户的Windows 7系统开机后出现黑屏,代码为 Windows无法启动: WindowsSystem32ConfigSystem”。这个问题该如何修复呢?现在小编就给大家分析一下吧。 其实这个代码的意思是引导文件丢失了,引导文件(NTLDR)一般存放于C盘根目录下,是一个具有隐藏和只读属性...

Windows7截图出现黑屏导致截的图黑呼呼一片

Windows7截图出现黑屏导致截的图黑呼呼一片

最近一些Windows 7用户反馈说,自己在截屏的时候出现黑屏,导致自己截的图黑呼呼一片。这个问题该怎么解决?今天小编就为大家提供一个解决的方法。 步骤 1 在windows xp时代,很多用户都曾被视频截图后的“全黑图片”困扰。对此,在解决本地播放时出现的截图变黑问题,一般有两个方法可以用来解...

windows 7玩网游PING高即网络延时比较高的解决方法

windows 7玩网游PING高即网络延时比较高的解决方法

经常听见有人说用Windows 7玩网络游戏的时候网络延时比较高,也就是ping比平时xp的时候高一点,一直找不到原因,很苦恼。今天我们终于找到理由了,原来是Windows 7的一个服务在作怪,这个服务叫:Multimedia Class Scheduler,就是这个服务让我的PING如此高,问题是...

微软为windows 7用户重新发布补丁KB2952664 帮助提升Win10升级体

微软为windows 7用户重新发布补丁KB2952664 帮助提升Win10升级体

1月13日消息,微软今天为Windows 7(SP1)用户重新推送了编号为KB2952664的更新补丁,该更新在官方KB知识库中的描述为“Windows 7系统升级兼容性更新”,用于帮助微软改进当前版本系统,提升升级到最新版Win10系统的体验。 这项更新还用于在系统中显示Windows10更新提...

windows 7/8/xp系统关闭自动播放功能禁止音频媒体自动播放

windows 7/8/xp系统关闭自动播放功能禁止音频媒体自动播放

Windows 7/8系统: 控制面板——自动播放——取消掉为所有媒体和设备设置自动播放 winXP系统: 开始—运行—gpedit.msc—计算机配置—管理模板—系统—关闭自动播放—已启用—所有驱动器—确定  关闭自动运行功能说明: 一旦您将媒体插入驱动器...