游泳健将

小张一直自诩为游泳健将,直到有人用比小张优美百倍的姿势一跃入水。

百米蛙泳,翻身,百米自由泳。“高手呀!这才是真正的健将,我跟他比还差老大一截。”,小张不由得在心中竖起大拇指。正想着,游泳健将在小张身旁一个优雅的转身,紧接着水花飞溅,漂亮的蝶泳!

蝶泳不熟是小张心中一直的痛,“何不向高手讨教一下?”小张技术也是不俗,心念一动就蹬壁划手追了出去。可健将到底是健将,小张虽是自由泳,和健将的距离却似越来越远。正在小张佩服又沮丧之际,前方泛起的水花平息了。游泳健将消失了!

小张翻身出水,只见自己前面的泳道一片平静,竟不似有人游过。刚刚出水太急,小张的左耳进了水,只听到一片嗡嗡声。边扣耳朵边左右张望,最左边的泳道里一群学游泳的小孩正扒着岸边练习蹬腿,而比较靠右的泳道里有几个正在缓慢地游着蛙泳的老头。耳朵里的水流出来,正常的声音回来了。小张却还没发现健将的踪影。

扑通!扑通!两名穿着黄衣的救生员游到小张面前。不一会儿,抽了筋沉了底的健将被捞了出来。

后来小张一直自诩为游泳健将。

不好的梦

听说她的南极蜜月,
做了不好的梦。
醒了。

等待起锚的白色轮船。
她坐在路边,
一个人呕吐。

“别去。”
“别去!”
她亲了我。

轮船消失了。
我孤独地在送行的人群里,
想着这个梦。

哈利波特与伊布拉莫维奇

拜前一段Star trek上映的风波所至,网上涌现出无数关于数字巨幕和imax的分辨贴。虽然是BBT fans,但实在装不像star trek的伪fans。于是等到hp上映,周末就溜达到石景山去去看所谓真正的数字imax外送3d。结果这一下收到好黑好无聊的电影巨大一枚,事实证明再大的屏幕上烂片也还是烂片……

且不说改编剧本是不是fans向,单说这故事拍的实在是流水账的典范!近3个小时的剧情,要说也是包含了大场面、悬疑、英式幽默、校园爱情、悲剧等等一大票东西,然而我们伟大的David Yates导演同学,居然将片子一直维持在匀速直线前进!牛顿第一定律,万岁!

至于导演知不知道fans想看啥的问题,偶们观影结束得出的结论是,金融危机席卷全球呀~ 仔细想想这部除了一开场有个伦敦大桥3d地垮下去,原著里所有大点的场面被删得差不多了。像隐形衣这种高科技玩意直接完全消失,最后群p也免了,邓校长虽然喷了火但也是一闪而过。到了最后预算肯定是不够让人马放箭、人鱼唱歌、各色人种汇聚一堂了(群众演员就得找多少),于是乎就让海格把老头偷偷埋了吧。另外对于fans向怨念的伏地同学黑家世、黑青少年世,别天真了,哪有那么多钱找演员呀!他爸、他妈、他爷爷、他叔、那个老女人,做个赫奇帕奇的杯子不说,还得搞出个家养小精灵(有人记得多比嘛)。还有最后重回霍格伍兹的回忆,拉弗尔·费同学的片酬能少吗?从简,从简。

不过我纳闷的是,既然哈利波特都危机了,怎么巴萨、皇马还这么能烧钱呢。。。居然是45M+eto+免费租借hleb换ib。。。拉波尔塔真亲善喵~ 既然卡卡、ib都滚蛋了,我也支持意甲德甲法甲化,国米拜仁化,AC多特蒙德化~

ps. 其实所有的一切我都能忍,我也知道hp拍出来一定不会比书好看。但是金妮呀,你真的是一个人见人爱的万人迷呀。还有呀,为什么要把接吻那一段改掉呀,为什么呀……

时间不够我爱

如果有一种魔法,记录下那段时光里你的每句话。
那么我现在回头看,是否还懂得这些片语只言。

如果有一种魔法,记录下那段时光里你的每个笑。
那么我现在在身边找,是否还能认出你的容颜。

如果有一种魔法,记录下那段时光里你的每次失眠。
那么我现在回去陪你,是否可以让你在那些夜晚不再难捱。

如果有一种魔法,记录下那段时光里我的每个错。
那么我现在改,你是不是也不会再回到我身边。

看完杀戮都市,把firefox3.5卸了

久仰大名的漫画,终于找来看掉了(坚持到凌晨4点)。虽然设定很有意思,画风绝对算华丽(赤裸裸地卖H和卖血),但还是完全失望于这种想到哪画到哪的剧情。。。基本上说,我最讨一个故事里人物毫无缘由地性情大变(以及大变好多次)。。。于是最后只好把它当作若干独立的故事——只是每个故事里人物的名字和长相恰好完全一样了。这么看的话,恩,这个漫画还是不错的,血和波霸!剧情退散!

ff3.5终于把我逼疯了。奇慢无比的启动速度,外加晚上如果不关机的话早上ff一定是已经崩溃掉的诡异现象,忍到今天,它终于完全不能启动了。。。囧。在禁用插件、卸载重装、删掉app data里的内容接连无果的情况下,我一怒重装了3.0.11。好吧,不得不说,用惯了3.5,3.0.11的启动速度怎么这么快。。。= =|||

最后呢,要指出的是,如果你认为题目的两个并列句之间一定存在某种因果或者转折关系,那么你就输了。好。完。

OAuth协议更新到1.0a

上个月24号发布了针对上次那个漏洞修补的更新版协议1.0a。协议本身已经是最终的版本了,但暂时还没有合并到OAuth的官网中,按邮件列表中的说法是因为还有一些license的工作要做。下面简单说一下这次的修补。

首先回顾一下针对上次漏洞的攻击:

  1. 攻击者到一个合法的Consumer站点获得一个request token
  2. 利用trap site让受害者授权这个request token
  3. 之后针对callback的不同,有几种不同的处理方法:
    1. 如果Provider站点对第二步(请求用户授权)中的callback没有限制,那么攻击者可以利用trap site将callback设为自己的站点,然后通过这个callback判断受害者何时完成授权。等到受害者授权后,攻击者访问合法的callback来获得受害者的access token
    2. 其他的情况下(使用预定义的静态callback、没有callback由用户手工完成授权),那么攻击者和受害者之间进行竞争,当攻击者恰好在受害者授权和访问callback的间隙访问合法的callback,那么攻击者就获得了受害者的access token

接下里来看这次协议对于漏洞的修补:

  1. 1.0协议中callback在oauth认证的第二步(请求用户授权)中通过url参数设置并明文传输。新的1.0a协议中,callback作为oauth第一步(获取request token)的参数(oauth_callback),并参与到签名过程。此外当没有callback时,callback值必须设为oob(out-of-bound)。
  2. Provider在返回request token的同时,返回一个oauth_callback_confirmed参数,其值为true,表示Provider支持1.0a协议。
  3. 用户完成授权后,Provider在redirect到callback时,提供一个新的oauth_verifier参数(无法被猜测的随机字串),该参数会被用在request token换取access token的过程中。如果callback值为oob,那么Provider需要提供页面显示oauth_verifier参数值。而Consumer可以引导用户将这个参数值填入适当位置,来完成授权。

问题的解决:

  1. 通过预先指定callback,并将其作为request token的一部分,可以避免3.1中,攻击者假造callback的情况
  2. 通过oauth_verifier参数,可以避免3.2中,攻击者和受害者竞争访问callback页面的问题。(在使用预定义静态callback或者无callback的情况下,callback无法对攻击者保密。但因为攻击者无法获知oauth_verifier参数值,因此无法换取access token)

协议本身很长,主要修改集中在第6节。此外原先的附录B现在转正成为第11节并增加了一些新的安全建议。

这里还有一些概略的介绍本次修补的文档:An Idiot’s Guide to OAuth 1.0aMoving from OAuth 1.0 to OAuth 1.0a

恩,大抵如此。学术完毕,好累。。。囧。。。