在普通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的ajax框架xajax入门与试用介绍
Dec 19 PHP
PHP导航下拉菜单的实现如此简单
Sep 22 PHP
php中in_array函数用法探究
Nov 25 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
Oct 20 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
Mar 17 PHP
Laravel5.1自定义500错误页面示例
Oct 09 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 PHP
浅谈thinkphp5 instance 的简单实现
Jul 30 PHP
PHP实现网站访问量计数器
Oct 27 PHP
php语言注释,单行注释和多行注释
Jan 21 PHP
PHP设计模式之原型设计模式原理与用法分析
Apr 25 PHP
PHP中非常有用却鲜有人知的函数集锦
Aug 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 之 没有mysql支持时的替代方案
2006/10/09 PHP
我的php学习笔记(毕业设计)
2012/02/21 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
探讨JavaScript语句的执行过程
2016/01/28 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
Bootstrap 模态框(Modal)插件代码解析
2016/12/21 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
vue axios 简单封装以及思考
2018/10/09 Javascript
JavaScript遍历查找数组中最大值与最小值的方法示例
2019/05/24 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
Python中多个数组行合并及列合并的方法总结
2018/04/12 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
用Python实现校园通知更新提醒功能
2019/11/23 Python
Python如何基于rsa模块实现非对称加密与解密
2020/01/03 Python
python_mask_array的用法
2020/02/18 Python
美国椅子和沙发制造商:La-Z-Boy
2020/10/25 全球购物
高校十八大报告感想
2014/01/27 职场文书
制冷与空调专业毕业生推荐信
2014/07/07 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
Python3 类型标注支持操作
2021/06/02 Python
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技