网络安全与个人隐私

最近又开始瞎忙起来了,现在正好在迁移服务器数据,网速龟慢,上次和同事讨论如何神不知鬼不觉的发帖子,一般技术宅肯定是找各种代理,然后用代理作为中转,这样真实的IP就会被隐藏,但是某些部门通过技术手段依旧可以追踪到你,因为他们可以知道你是什么时候登录的代理。好吧,问题在这里就复杂了,其实国外的项目Tor就是为匿名访问而诞生的,其主要的原理就是通过多个复杂节点分散流量达到混淆隐藏真实主机的目的,可惜的是因为某些原因Tor在国内无法正常使用。也想到通过肉鸡进行二次乃至多次代理来加大追踪难度,但是这实际上也导致自己操作变得困难,想想目前的网速,得不偿失,最后讨论的结果是:到地摊上购买一张匿名的手机卡(貌似现在都是实名的了),然后买个能上网的手机(便宜一点,最好非智能机),然后到某处蹭个WiFi,然后用手机上网发帖,完事后销毁手机和卡,这样看来确实天衣无缝,但是同事的一句话给我泼了冷水:你有没有考虑过公共场所星罗密布的监控探头?好吧,看来这条路子也是有风险的。

继续阅读

Cookie安全及Cookie跟踪技术导致个人隐私的泄漏

这篇文章是我所选修课程的作业,简单介绍了XSS、Cookie、Web安全威胁和个人隐私泄露问题,个人见解仅供参考,如有不当之处还望批评指正。

大家上网肯定对于HTTP并不陌生,完整的网址开头大多就是以http://开始的(当然不全是,加密的SSL浏览技术的网址是以https://开头的),HTTP表明的就是Hypertext Transfer Protocol超文本传输协议,大多数网页就靠它传输并呈现在我们的面前了。

现在的问题在于HTTP是建立在TCP/IP基础上的,我们知道TCP/IP协议是无状态协议(Stateless),这里的无状态就是说TCP/IP协议不保存连接的客户端的状态,更通俗一点是TCP/IP比较健忘,比如刚才客户端通过TCP/IP对服务器发送了一条消息,然后断开连接后再一次的连接服务器再发一条消息,这里同样的客户端,服务器并不知道这两条消息来自同一客户端,每次连接的建立服务器将认为是新客户端发起的请求。

继续阅读

JavaScript利用Cookie保存所设置网页的字体大小

最近日本地震灾害比较严重,有些朋友可能会关注日本的网络媒体多一些,大家发现日本的网站很多都有字体大小的设置,分为“大”、“中”、“小”3个等级,这个对于视力不佳者可谓福音,也免去了调整浏览器字体大小之苦,但是如何让网站记住用户设置的字体大小呢,这时我们就需要本地存储了,在这里我们就用到前一篇文章《JavaScript本地存储(1) : 使用Cookie》讲解的Cookie类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<html>
<head>
<style type="text/css">
body {
  font-size:75%;
}
p {
  font-size:1.2em;
}
.fontset a{
  font-size:12px;
}
</style>
</head>
<body>
<script type="text/javascript">
// 这里放《JavaScript本地存储(1) : 使用Cookie》的Cookie类代码
 
var myCookie = new Cookie();
 
function loadFontSize() {
  document.body.style.fontSize=(myCookie.getItem("fontsize"));
}
 
function setFontSize(value) {
  myCookie.setItem("fontsize", value);
  loadFontSize();
}
 
window.onload = function(){
  loadFontSize();
}
</script>
<div class="fontset">
<a href="javascript:setFontSize('120%')"></a>
<a href="javascript:setFontSize('100%')"></a>
<a href="javascript:setFontSize('75%')"></a>
</div>
<p>我是内容</p>
</body>
</html>

大家可以看到,设置字体的办法是通过设置style的fontSize属性,当然这里我们通过CSS将body的字体默认为75%这样的百分比大小,然后通过设置内容的font-size字体大小为指定em为单位的数值大小就可以了,然后我们可以通过调整body的font-size的百分比来控制整体字体大小,当然对于字体固定为px像素大小的只能调整相应的像素值了,因为百分比对像素值的字体大小不起作用,这也就是为什么有些网站无法通过浏览器上的调整字体大小来调整的原因,当然这个像素大小字体的作用可以用来固定我们的“大”、“中”、“小”三个链接的字体大小,避免它们也随着整体百分比的改变而字体变化。

JavaScript本地存储(1) : 使用Cookie

在网页开发中,为了某些特殊的效果比如像购物车、页面换肤、记住密码等等就可能需要用到JavaScript的本地存储功能,说到底JavaScript的本地存储就是让网站能够“记住”你,等到下次再访问的时候能够识别出来,当然记住的方式无外乎就是通过在浏览者的电脑上保存一个记录的文件。本系列文章主要讲解这些技术,当然我们实现约定一个类似于下面的接口:

1
2
3
4
5
var IStorage = function() {
  this.setItem = function(key, value) {}
  this.getItem = function(key) {}
  this.remove = function(key) {}
}

下面的编程实现将围绕在这个接口展开,关于为什么定义这个接口,我将在下面的文章中阐述。

说到Cookie(也可以叫做Cookies)大家可能比较熟悉,这可以是最早实现本地存储的一个方法之一了,实现也非常简单。基于IStorage我们实现了下述关于Cookie类的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var Cookie = function() {
  this.setItem = function(key, value) {
    var expires = new Date();
    expires.setTime(expires.getTime() + 
            1000 * 60 * 
            60 * 24 * 365);
 
    document.cookie = key + "=" + 
            escape(value) + 
            ";path=/" + 
            "; expires=" + 
            expires.toGMTString();
  }
 
  this.getItem = function(key) {
    var key_equal = key + "=";
    if (document.cookie.length <= 0)
      return "";
    var pos_start = document.cookie.
            indexOf(key_equal);
    if (pos_start == -1)
      return "";
    pos_start += key_equal.length;
    pos_end = document.cookie.
          indexOf(";", pos_start);
    if (pos_end == -1)
      pos_end = document.cookie.length;
 
    return unescape(document.cookie.
            substring(pos_start, pos_end));
  }
 
  this.remove = function(key) {
    this.setItem(key, "");
  }
}

可以看出每个Cookie由key和value这样的键值对组成,而且在这之间以分号相隔,形如key1=value1;key2=value2;等等,当然操作cookie可以通过document.cookie进行,然后我们所做的其实是文本分析,比如如何根据key获得等于号后面的value。

好了,下面的一篇文章我将会给大家展示一个例子,讲解Cookie的使用方法。