在普通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和XSL stylesheets转换XML文档
Oct 09 PHP
php中变量及部分适用方法
Mar 27 PHP
解析PHP中intval()等int转换时的意外异常情况
Jun 21 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
Jan 22 PHP
php实现有趣的人品测试程序实例
Jun 08 PHP
WordPress中"无法将上传的文件移动至"错误的解决方法
Jul 01 PHP
为你总结一些php信息函数
Oct 21 PHP
php+webSoket实现聊天室示例代码(附源码)
Feb 17 PHP
Thinkphp5行为使用方法汇总
Dec 21 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
Jan 23 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中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
js 操作符汇总
2014/11/08 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
JS HTML5拖拽上传图片预览
2016/07/18 Javascript
AngularJS基础 ng-open 指令简单实例
2016/08/02 Javascript
微信小程序 出现错误:{"baseresponse":{"errcode":-80002,"errmsg":""}}解决办法
2017/02/23 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
Python datetime时间格式化去掉前导0
2014/07/31 Python
python中遍历文件的3个方法
2014/09/02 Python
python执行外部程序的常用方法小结
2015/03/21 Python
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
Python读取YAML文件过程详解
2019/12/30 Python
python进行二次方程式计算的实例讲解
2020/12/06 Python
澳大利亚小众服装品牌:Maurie & Eve
2018/03/27 全球购物
Servlet如何得到服务器的信息
2015/12/22 面试题
党校培训自我鉴定
2014/02/01 职场文书
农林环境专业求职信
2014/03/13 职场文书
机关搬迁方案
2014/05/18 职场文书
文明和谐家庭事迹材料
2014/05/18 职场文书
小学感恩教育活动总结
2014/07/07 职场文书
合作协议书格式
2014/08/19 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
幼儿学前班评语
2014/12/29 职场文书
学雷锋感言
2015/08/03 职场文书
vue+element ui实现锚点定位
2021/06/29 Vue.js
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
DIY胆机必读:各国电子管评价
2022/04/06 无线电