[原创]在普通HTTP上安全地传输密码
2006-08-16
在phpx.com上原载,是我的原创
http://www.phpx.com/happy/thread-122499-1-1.html上有很多讨论


    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,那么两个密码加密后的字符串是完全不同的!

完。

3241 read 4 comment(s)
[原创]在普通HTTP上安全地传输密码
2006-08-16
在phpx.com上原载,是我的原创
http://www.phpx.com/happy/thread-122499-1-1.html上有很多讨论


    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,那么两个密码加密后的字符串是完全不同的!

完。

2685 read 4 comment(s)
phpcms文件管理器 v4.02 开发中....
2006-08-01
4.03版请点击这里 http://www.longbill.cn/blog/index.php?id=75


此日志不断更新中....(06/08/18)

phpcms文件管理器要逐渐向网络硬盘转型了!
抢先体验地址: http://cn5.cn/test1/
欢迎在此提出建议或意见

4.02 已经改进的地方:
完全修改了模板,可以自适应窗口大小
集成BlueShow图片浏览器
修改了限制文件类型的一个bug
修改了zip打包和解压的bug
修改了根目录为../../时的bug

8月13日更新:
彻底征服了IE缓存策略BUG!!!减轻了服务器的负担!

8月18日更新:
才用了json来传输数据,可以传送更多的信息(包括目录简介等)。也可以解决全角字符的Bug

9月23日更新:
晕,进度越来越慢了,不得不跟大家提一下了:
    其实我已经高三了,原来以为高三没什么的了不起的,照样可以抽出时间写程序。但我发现我错了,为了高考,为了我的前程,我不得不全身心地投入到学习中。。。如果没有经历过高三的人肯定不能体会到高三是怎样的一种生活,为了提高成绩,可以说学校方面用尽了一切措施,目的在于挖干我们身上的每一点潜能。甚至还用了起催眠作用的演讲,班会等等,,但我们也是自愿的,,(哎,现在的社会也只能这样了。。)
    其中一着狠毒的就是叫我们把自己的目标大学写出来,做一个大的告示牌挂到教室。。。我们班43个同学,居然就有17个写了清华或北大 ,我则没有那种冲动,填了个浙江大学,我想也不错了吧,而且我相信我一定能考上的。
    就写这么多了,我还要去看书呢。。。

完。

3303 read 29 comment(s)
得到元素真实的背景颜色的函数[javascript]
2006-08-01
这个函数来自Rico,自己改了一下。
说明: 
    传入参数一个,为元素的id值或元素本身,返回为元素的真实背景色值(字符串)。 值得一提的是IE里面返回的是16进制的值,而Mozilla则是rgb值。
演示地址:  http://longbill.cn/down/sample/getbg.htm

function getBg(element)
{//author: Longbill (www.longbill.cn)
if (typeof element == "string") element = document.getElementById(element);
if (!element) return;
cssProperty = "backgroundColor";
mozillaEquivalentCSS = "background-color";
if (element.currentStyle)
var actualColor = element.currentStyle[cssProperty];
else
{
var cs = document.defaultView.getComputedStyle(element, null);
var actualColor = cs.getPropertyValue(mozillaEquivalentCSS);
}
if (actualColor == "transparent" && element.parentNode)
return arguments.callee(element.parentNode);
if (actualColor == null)
return "#ffffff";
else
return actualColor;
}

完。

3017 read 2 comment(s)
用PHP控制用户浏览器缓存!
2006-07-29
前段时间因为补课,所以好久没有发过日志了~ 你写的php程序是否高效?你是否会担心自己的程序太庞杂,执行速度很慢?你是否用过php动态生成图片? 其实每种浏览器都有缓存策略,会暂时将每一个浏览过的文件缓存在一个特殊的文件夹里。我们就可以在用户重复提交页面请求的时候,告诉用户这个页面没有改变,可以调用缓存。 那我们怎么知道用户有没有这个页面的缓存数据呢? 其实浏览器在发送请求的时候会先发送http头,一般象这样:
Date: Sun, 30 Jul 2006 09:18:11 GMT Content-Type: image/gif Last-Modified: Wed, 19 Jul 2006 07:40:06 GMT ETag: "8c55da8d6abc61:2327" Content-Length: 14757
其中Last-Modified: Wed, 19 Jul 2006 07:40:06 GMT ETag: "8c55da8d6abc61:2327"就是有关页面的缓存信息的。然后如果服务器返回的响应代码不是HTTP 200 (OK),而是 304的话,浏览器就会从缓存中读取数据。 根据这个原理,我写了一个函数,这个函数可以用在不经常更新或者需要经常刷新的页面,可以大大减轻服务器的负担,因为它如果发现客户端有缓存,就向客户端发送一个304响应,然后停止程序的执行。 演示地址:http://www.longbill.cn/down/sample/etag.php
cache();
echo date("Y-m-d H:i:s"); 
function cache()
{//author:Longbill ( www.longbill.cn )
  $etag = "eeee";  //标记字符串,可以任意修改
  if ($_SERVER['HTTP_IF_NONE_MATCH'] == $etag)
  {
    header('Etag:'.$etag,true,304);
    exit;
  }
  else header('Etag:'.$etag);
}

完。

2818 read 3 comment(s)
上一页 1... 26 27 28 [29] 30 31 32 ...35 下一页
Copyright © Longbill 2008-2024 , Designed by EndTo , Powered by EndCMS