在普通HTTP上安全地传输密码


Posted in PHP onJuly 21, 2007

1。理论 
    在普通HTTP上,一般表单中的密码都是以明文方式传到服务器进行处理的。这无疑给了坏人以可乘之机!这里我们就说说怎么传输密码才是安全的! 
    与其传输密码本身,到不如传输其加密后的形式。MD5是个不错的选择。第一,不同的资源几乎不可能生成相同的MD5摘要,第二,MD5的编码方式是不可逆推的。有了这些特性,我们就可以让MD5摘要公开的在Internet上传输,而不必担心密码被坏人知道。然后在服务端也将密码通过同样的方式加密,最后比较这两个字符串。 
    然而,我们不能为了登陆而将密码md5后直接通过Internet传输,因为坏人虽然不会知道我们的密码,但肯定会知道这个特殊的字符串可以授权他们访问我们的网站! 
    这就是公匙和私匙要解决的问题,首先由服务器提供一个随机字符串,然后客户端将这个随机字符串和密码相加后再加密! 
    每次登陆时,服务器会产生不同的随机字符串,这样你的密码没有变,但是通过上面的方法加密后的MD5摘要却完全不同。这样就算坏人得到了这些MD5摘要,他们也不可能分析出你的密码! 
    这种方法中,服务器提供的随机字符串叫做"公匙",寿命很短,并可以被任何人利用;你的密码叫做"私匙",寿命很长,而且永远也不会被人知道。 
    2。实现 
    客户端Javascript并没有提供现成的md5算法,但我们在 google 上用 "md5 javascript" 搜索,就可以得到很多md5在Javascript上实现的例子。 
    在PHP中我就不用多说了,直接用md5()这个函数就可以搞定!随机字符串我们可以用session来存储(PHP就是强啊~~) 
    3。注意 
    在JS中,中文都是UTF-8格式的,所以如果你的密码是中文,而且存储在服务端的密码的编码方式是GB2312,那么两个密码加密后的字符串是完全不同的!

PHP 相关文章推荐
一个php作的文本留言本的例子(三)
Oct 09 PHP
php自动加载机制的深入分析
Jun 08 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
Dec 17 PHP
Yii中使用PHPExcel导出Excel的方法
Dec 26 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
Sep 22 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
Mar 31 PHP
Laravel利用gulp如何构建前端资源详解
Jun 03 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
Jul 17 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
php web环境和命令行环境下查找php.ini的位置
Jul 17 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
Oct 14 PHP
php将xml转化对象的实例详解
Nov 17 PHP
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
Jul 21 #PHP
PHP+FLASH实现上传文件进度条相关文件 下载
Jul 21 #PHP
一段php加密解密的代码
Jul 16 #PHP
php下一个阿拉伯数字转中文数字的函数
Jul 16 #PHP
php+mysql开源XNA 聚合程序发布 下载
Jul 13 #PHP
PHP如何编写易读的代码
Jul 10 #PHP
php为什么选mysql作为数据库? Mysql 创建用户方法
Jul 02 #PHP
You might like
php中目录,文件操作详谈
2007/03/19 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
如何在PHP中读写文件
2020/09/07 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
js获取url参数的使用扩展实例
2007/12/29 Javascript
jQuery解决iframe高度自适应代码
2009/12/20 Javascript
ASP中Sub和Function的区别说明
2020/08/30 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
jQuery网页版打砖块小游戏源码分享
2015/08/20 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
SWFUpload多文件上传及文件个数限制的方法
2016/05/31 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
2016/06/13 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
jquery仿微信聊天界面
2017/05/06 jQuery
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
vue基础之事件v-onclick="函数"用法示例
2019/03/11 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
[01:08:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS LGD-CDEC
2014/05/22 DOTA
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
Python中的闭包实例详解
2014/08/29 Python
python获取当前日期和时间的方法
2015/04/30 Python
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
Python实现调度算法代码详解
2017/12/01 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
建筑结构施工专业推荐信
2014/02/21 职场文书
交通事故私了协议书
2014/04/16 职场文书
我的小天地教学反思
2014/04/30 职场文书
工作岗位职责范本
2015/02/15 职场文书
一般纳税人申请报告
2015/05/18 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript