分类:'就通一点' 的所有文章

游戏发芽网在线聊天 - XSS攻击 与 javascript标题栏闪烁

游戏发芽网的聊天功能用的人相对较少,但是我至少看到了10次以上有价值的讨论
当时怕聊天窗口太复杂,实现都用的很简单的方法,但是最近发现了两个问题。

第一个是:最近发现有位同学在玩华容道峰回路转搞不定的情况下,伪造了系统消息

>> 搞定 峰回路转 用了1步

呵呵这个本身并没有什么,开个玩笑,无伤大雅
而且聊天记录刷新很快,一个小时以后这条记录就会消失

但是,这解释了一个很严重的问题,那就是著名的XSS攻击

具体的说,在用ajax的方式收到消息以后,我用直接追加html的方式进行添加,没有进行escape。

严重的后果可能是用户密码丢失、页面混乱等等等等

关于详细的XSS攻击参见:
1. Google搜索跨站脚本攻击, 2. 也谈跨站脚本攻击与防御, 3. 詳解XSS攻擊

最常用的方法就是escapeHTML,不过这个常用的函数javascript居然没有自带,那就写一个吧:

JavaScript语言: Javascript string escapeHTML
//一个应该常用的javascript string函数,不知为何没有直接提供
String.prototype.escapeHTML = function () {                                       
  return this.replace(/&/g,'&amp;').replace(/>/g,'&gt;').replace(/</g,'&lt;').replace(/"/g,'&quot;');
};


第二个问题:聊天窗口不在最前的时候,来消息用户就看不见了
搜了一下,简单的解决方案就是标题栏闪烁
一开始想的方法是:当窗口blur的时候设置一个标记,focus的恢复标记,当收到消息又有标记的时候闪烁
但是没找到合适的方法
继续搜,发现StackOverfow有一篇文章专门说这个
使用的方法独辟蹊径:不管窗口有没有在最前,来消息都闪烁标题栏
不过当鼠标在窗口中移动的时候就停止闪烁,这样如果窗口在最前,闪烁就很快消失,否则只有切换过来才停止

呵呵,真是条条大路通罗马。

不过StackOverflow上面那份代码有问题:当有多个消息的时候,即便鼠标移动也不行了,因为创建了多个inteval。
我改进了一下,贴在下面:

JavaScript语言: Javascript - 后台窗口来消息时标题栏闪烁
//from: http://stackoverflow.com/questions/37122/make-browser-window-blink-in-task-bar
/*
this won't make the taskbar button flash in changing colours, but the title will blink on and off until they move the mouse. This should work cross platform, and even if they just have it in a different tab.
*/
function clear_blink(oldTitle) {
  clearInterval(g_timeout_id);
  g_timeout_id = null;
  document.title = oldTitle;
  document.onmousemove = null;
  document.onkeydown = null;
}
function blink_info(msg) {
  var oldTitle = document.title;
  if (typeof(g_timeout_id) != "undefined" && g_timeout_id) {
    clearInterval(g_timeout_id);
  }
  g_timeout_id = setInterval(function() {
      document.title = document.title == msg ? ' ' : msg;
    }, 500);
  document.onmousemove = function() { clear_blink(oldTitle); };
  document.onkeydown = function() { clear_blink(oldTitle); };
}

PS:心里惴惴,感觉还没有搞定的样子…
PS2: StackOverfow上面有很多好文章,以后有空转几篇

  • Share/Bookmark

Google英文搜索

Google的中文搜索在搜索一些软件及一些技术问题的时候,结果和英文搜索差别太大了

比如这个:

Launch - Google中文搜索: 第一页都没有Launchy主页的链接,都是下载站的链接。

更加不爽的是:国内的下载站,即便是天空下载站这样的站点,软件描述里面都没有软件主页链接!

这在国外软件下载网站里面是不可能的。

Launch - Google英文搜索:第一个链接就是Launchy主页的链接

很多这样的例子,使我不得不把Google英文搜索收藏下来:

http://www.google.com/webhp

(不知道为什么搜索选项里面没有的选,Firefox上的搜索框搜出来的还是中文的)

  • Share/Bookmark

定位鼠标

用笔记本经常为鼠标在哪里烦恼,特别有些隐藏鼠标的程序,要晃一晃才能找得到

今天才知道windows已经提供这个功能了,在“控制面板”中,打开“鼠标”选项,在“指针”选项卡里面最下边,选上“按Ctrl键时显示鼠标位置”即可。

然后按Ctrl键看看效果吧。一圈圈的涟漪,中心点就是鼠标的当前位置。

XP和vista 下都可以的。

  • Share/Bookmark

简单设置循环日历,避免“忘记老婆的生日”

今天看到foxgao发了一番感慨,因为“忘记了老婆的生日”

首先,老婆的支持是最重要的,不要忘。
但是忘记是人类的天性,否则脑袋里都塞满陈旧的记忆,如何进步呢?

不过,作为IT技术人员,可以简单的通过技术尽量避免这种事情的发生。

以下方法适合outlook calendar、google calendar和有循环日历功能的手机
1. 对于每个重要的节日/纪念日(比如生日和结婚纪念日),添加一个事件
2. 把这个事件设置为每年一次的循环
3. 设定提前1周(自己调节)提醒,可以通过自动发email或者谈对话框的方式

好了,搞定了,至少生日、结婚纪念日啥的不用担心了。

想起大话西游里的唐僧来了:虽然你很诚恳的看着我,但是你还是要说啊,你不说我怎么知道呢?
纪念日的时候,采用什么手段不是最重要的,最重要的是要让她知道,我真的真的真的真的很在乎你。

  • Share/Bookmark

无意中发现访问中文维基百科提速的方法

维基百科中文版被G/F/W屏蔽很久了,很多用的资料不得不用Tor,但是很慢

今天偶然发现一个方法可以提速:
首先,你要有tor和tor button,或者类似的可快速切换代理的东东
然后,Enable Tor,打开中文维基百科主页:http://zh.wikipedia.org
一般情况下,会很慢,这时候,只要你快速的切换到不用代理的模式(Tor Disabled),速度很快,马上打开了
然后,切换回去(Enable Tor),打开某个链接,等个几秒钟,再切换到不用代理的模式,很快就带开了

【插播广告:代码发芽网,在线代码语法高亮】

总结:用代理做连接,然后关闭代理打开,如是往复

BTW:
这个方法,估计是由于G/F/W的屏蔽机制有关,说不定那天就失效了。
唉,最直接的方法,当然是关闭Great、Fire、Wall啦,如果你有这个权利的话

  • Share/Bookmark

« 上一页下一页 »