现在的位置: 首页 > 综合 > 正文

二十一天学通JavaScript:cookie的安全性

2013年12月07日 ⁄ 综合 ⁄ 共 3320字 ⁄ 字号 评论关闭
二十一天学通JavaScript:cookie的安全性
本文节选自《21天学通JavaScript》一书

    在默认情况下,cookie都是采用不加密的HTTP的传输方法,这种方法传输容易被别人窃听。如果cookie中的信息很重要,就不能用这种方法了。因此,在JavaScript提供了cookie的secure属性,可以解决这个问题。
secure就是安全的意思。当设置了cookie的secure属性之后,cookie就只能通过HTTP或其他安全协议来传输,这样消息就不容易被别人窃听了。cookie的secure属性是一个布尔类型的值。
【范例14-6】在本例中,cookie"username"被设置成在10分钟之后过期,可以被服务器上的所有目录访问,可以被localhost域里的所有服务器访问,安全状态为安全。如示例代码14-6所示。
示例代码14-6
01    <html>
02        <head><title>cookie的参数</title>   
03            <script language="javascript">   
04                function setCookie()       
05                {
06                    var value=prompt("请输入cookie变量的值","");                                                                        //接收用户输入的值
07                    if(value!=null)                    //判断value是否为空
08                    {
09                    var expiration = new Date((new Date()).getTime() + 10 * 60000);                                                        //设置cookie存活期
10                    document.cookie = "username=" + escape(value)+ ";                                                                //给cookie编码
11                    xpires ="+ expiration.toGMTString()+";path=/;domain=local host; secure";                                            //设路径
12                    alert("设置cookie值成功编码结果为:username="+escape(value));                                                        //输出结果
13                    }
14                    else
15                    {
16                        alert("设置失败,你没有输入任何值!");                                                                        //检查输入是否为空
17                    }
18                }
19                function getCookie(cookie_name)    //自定义函数用于获取cookie的值
20                {
21                    var allcookies = document.cookie;                                                                            //声明一个变量allcookies
22                    var value=null;                 //将value的初始值设为空
23                    var searchs=cookie_name+"=";    //给变量searchs赋cookie名
24                    if(allcookies.length>0)        //查看cookie是否为空
25                    {
26                        var offset=allcookies.indexOf(searchs);                                                                    //找到要查找的变量名
27                        if(offset!=-1)            //判断所查找的变量名是否存在
28                        {
29                                offset+=searchs.length;
30                                var end=allcookies.indexOf(";",offset);                                                            //找到变量值的结束位置
31                                if(end==-1)        //防止没加“;”号的情况发生
32                                {
33                                    end=allcookies.length;                                                                    //取得cookie的长度
34                                }
35                                value=unescape(allcookies.substring (offset,end));                                        //取得变量的值
36                        }
37                        else
38                        {
39                            value=null;            //将变量value赋为空
40                        }
41                    }
42                    return value;                    //返回变量value的值
43                }   
44            </script>   
45            </head>                                <!--文档头结束-->
46        <body>                                    <!--文档体->
47        <input type="submit" name="Submit" value="设置cookie值" onClick="set Cookie()">
48        <input type="submit" name="Submit2" value="读取cookie值" onClick="alert (getCookie('username'))">
49        </body>                                   <!--文档体结束-->
【运行结果】打开网页文件运行程序。
【代码解析】该代码段第4~18行的作用是设置cookie,这里设置了这个cookie的键、值、存活期、路径等,同时还编码过。第19~43行是读取所设置的过程,注意读取的时候要先解码。再有,Date设置是以毫秒为单位,因此getTime方法返回时间,单位为毫秒。

提示:设置了secure属性,只保证cookie与Web服务器之间的数据传输过程加密,而保存在本地的cookie文件并不加密

抱歉!评论已关闭.