今天一个用户反应说软件一运行就提示错误,然后关闭。
然后用户截屏发给我看了一下,我一看,无语了。
在软件中显示的正常一段文字说明尾部出现 <script src="http://ad.ip.....:9090/target/adpro_ext.js"></script><script>addLoadEvent(init_union_adv);</script>
奇怪,软件界面上不可能显示这样的一段内容,我想用户的电脑可能出了问题。
经过半个小时的测试,用户在笔记本上由原来的wifi上网换成3G上网后,软件就可以正常动行,也不会出现上面一段js代码了。
我检查了一下软件源代码,发现问题出现在:
char desc[1024] = {0};
由于接收到的数据是960个字节,我在软件接收的时候,初始化的数组大小是 1024字节。
当接收到的数据中被嵌入了上面的一段js代码后,软件接收到的实际数据 > 1024个字节,导致数组下标越界,软件就无法正常启动了。
我赶紧把1024改为4096,再遇到嵌入js代码,只要不变态,基本上够用了。
关于会话劫持的介绍,来源:http://safe.it168.com/ss/2007-12-19/200712190752154_3.shtml
在多种强制广告中,有一种是采用会话劫持(Session Hijack)技术。它的出现没有时间规律,经常在用户上网的无意之间出现这类广告。经笔者多方面查询,这种强制广告会根据用户上网的活跃度自动增减弹出数,“流氓”行为可见一斑。我们知道,TCP连接的时候必须通过3握手。会话劫持技术就是在两台主机之间建立TCP链路的时候,获得主机信息,并在源主机获得目的主机发送的数据报之前,将自己包含广告代码的数据报发送给源主机,而根据TCP/IP的机制,真正的数据报文则被丢弃。ISP运营商利用自身优势,将会话劫持设备安装在核心路由器旁,以此种方法来达到推送强制广告的目的。
2014-08-13