在普通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 相关文章推荐
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 PHP
php去掉字符串的最后一个字符附substr()的用法
Mar 23 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
CI框架开发新浪微博登录接口源码完整版
May 28 PHP
PHP四舍五入、取整、round函数使用示例
Feb 06 PHP
php带抄送和密件抄送的邮件发送方法
Mar 20 PHP
PHP中如何判断exec函数执行成功?
Aug 04 PHP
PHP环境搭建(php+Apache+mysql)
Nov 14 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
Nov 16 PHP
Zend Framework实现自定义过滤器的方法
Dec 09 PHP
PHP接口继承及接口多继承原理与实现方法详解
Oct 18 PHP
PHP+Oracle本地开发环境搭建方法详解
Apr 01 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
乐信RP2100的电路分析和打磨
2021/03/02 无线电
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
2017/06/19 PHP
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
基于jquery的simpleValidate简易验证插件
2014/01/31 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
js中各种类型的变量在if条件中是true还是false
2014/07/16 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
2017/02/21 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
vue router2.0二级路由的简单使用
2017/07/05 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
深入理解NodeJS 多进程和集群
2018/10/17 NodeJs
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
python实现双色球随机选号
2020/01/01 Python
Python requests获取网页常用方法解析
2020/02/20 Python
Python sys模块常用方法解析
2020/02/20 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
自学考试自我鉴定范文
2013/09/26 职场文书
初中同学聚会邀请函
2014/02/03 职场文书
出纳会计岗位职责
2014/03/12 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
2014公司年终工作总结
2014/12/19 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
人与自然的观后感
2015/06/18 职场文书