理解 CSRF 和 XSS 攻击

CSRF(cross-site-request-forgeries) 当 web 站点允许认证用户执行某个敏感操作, 但不验证该操作是否来自用户本身时, 该站点就存在 CSRF 漏洞. 理解 CSRF 的关键是, 站点通常并不是验证一个请求来自认证过的用户, 而仅仅验证请求来自该用户使用的浏览器. 浏览器会同时运行多个网站的页面, 则存在这么一个 危险, 一个站点(在用户不知情的情况下)发送请求到站点二, 站点二错误的认为该请求来自用户. 如果一个用户访问了攻击者的站点, 攻击者可以强迫用户的浏览器执行一些敏感操作, 而目标站点看到请求是来自一个认证过的用户的浏览器, 毫无防备的执行了攻击者的操作, 而没有意识到被攻击了. CSRF 攻击容易和 CSS(cross site scripting) 混淆, 但是他们是很不同的. 一个对 XSS 做过完全防备的网站, 还是会有 CSRF 漏洞. XSS(cross-site scripting) 跨站脚本攻击是一种注入攻击, 恶意脚本被嵌入到正常的站点; 当用户访问那些正常站点时, 恶意脚本被同时加载到浏览器, 访问 cookie, session token, 其它敏感信息, 甚至重写整个页面. A nice CSRF blog OWASP

November 8, 2014 · 1 分钟 · ming

ember 中 extend 的小坑: prototype

ember 中我们用 extend 来扩展一个类, 它的工作机制非常类似 prototype. 开发中我几次碰到下面这个问题, 才开始重视这个知识点, 因为平常 ember 很好用太容易忽略这些小问题了. {% highlight javascript %} var Post = Ember.Object.extend({ comments: [] } var good1 = Post.create({comments: []}); var good2 = Post.create({comments: []}); var bad1 = Post.create(); var bad2 = Post.create(); var comment = Comment.create() good1.get(‘comments’).pushObject(comment); // good2.get(‘comments’) is [] bad1.get(‘comments’).pushObject(comment); // bad2.get(‘comments’) is [comment] {% endhighlight %} 如上述, Post 类有个 comments 属性, 如果你往 good 1 和 2 里面加评论, 没有问题. 但如果你往 bad 1 和 2 里面加评论, 它们的评论会同时出现在两个 post 里面!...

November 5, 2014 · 1 分钟 · ming

纯 js 的 web 开发框架 MEEN

做 ember 开发有一段时间了, 被它 弄的焦头烂额, 但渐渐对纯 js 的 web 解决方案产生了兴趣. 谷歌一下, 果然发现已经有类似的项目, 比如 meanjs, 但它前端用的是 angular, 私认为这种解决方案前端挺重, 所以前端不同区别还是挺大的, 故挖了一个坑, Mongo-Ember-Express-Node full-stack javascript open-source development framwork, 取首字母 MEEN, 地址在这里 MEEN, 我会一边学习, 一边完善, 也欢迎有兴趣的人一起.

October 29, 2014 · 1 分钟 · ming

javascript callback(回调)

最近在做前端开发工作,所以写了不少javascript代码.一直对javascript有成见,从前觉得就是浏览器里面做做跑马灯效果,做做验证啊等不严肃的语言. 现在看来我错了,javascript社区很活跃, 从jquery到前端mvc,到后端nodejs, grunt等, javascript的威力越来越强大. javascript是单线程的语言,很多事件处理需要用到回调,从而也需要保留上下文,故又大量使用必包.最近自己用javascript的这些特性解决了一个碰到的难题,我对javascript的理解也开始上了一个台阶. 场景很简单,我需要在页面上面用canvas画多个图片,故需要在draw函数之前让image对象提前准备好.可是图片的加载都是异步的,我只能在onload回调函数中知晓图片加载完成; 我可以在onload里面维护一个计数器,然后判断计数器如果达到图片个数,我就知道所有图片加载好了. 然后我可以执行一个函数, 可是这个函数我现在还没有呢, 又或者我想图片加载完之后可以按需调用我需要的函数,怎么办呢? 只能用必包. 具体看代码: {% highlight javascript %} /* ————— call back codes, for example: loadImages([‘1.gif’, ‘2.gif’, ‘3.gif’]).done(function(images){ alert(images.length); //alerts 3 alert(images[0].src+" “+images[0].width); //alerts ‘1.gif 220’ }) */ loadImages: function(arr){ var imgs=[]; var cnt=0; var oneLoaded = function(){ cnt++; if (cnt === arr.length){ allLoaded(imgs); } }; var allLoaded=function(){}; arr.forEach(function(item){ var tmp = new Image(); tmp.src = item; tmp.onload = function(){ oneLoaded(); }; tmp....

May 27, 2014 · 1 分钟 · ming

ember学习笔记一

换了个做web的小公司,找回不少工作的激情。不但有心仪的 ruby on rails,还有很火的前端 MVC 框架 emberjs,感觉立马进化到了21世纪。 rails 有10多分钟造一个blog的教程,ember好不逊色,也有10多分钟造一个blog的教程,页面易用程度等甚至更甚一畴。 先写一些体会,好的和相似的地方: 有些理念和rails相似,如命名约定;大量使用各种钩子;也是使用模板再编译成HTML。 绑定很强大。双向绑定,单向绑定,计算属性,观察者模式等,让变量的同步简单。 事件处理很强大。通过捕捉原生事件,转化为ember事件,再逐级处理,强大又简单。 充分使用ember特性,内置组件很强大。举个例子,内置的输入组件, 如果不指定type,是普通的输入框;指定为number,则变成有增减按钮的输入组件;如果是range,则变成一个拖动条。一个type的变动,可以改变视图和行为,省去大量javascript代码。 不好或者不相同的地方: 学习成本有点高,坑也不少。有些约定不直观,不了解你不知道如何下手。如绑定model后要通过content属性访问。。 javascript 感觉没有 ruby 优雅,一些实现看上去就没有 rails 简洁。如指定 has_many; javascript 的作用域和上下文不是很明显, 要理解清楚。 不要忘记这里的 M V C 都是在浏览器中运行,都是javascript对象。

May 8, 2014 · 1 分钟 · ming

手机自助点餐

小白领 A和女朋友B逛街,肚子饿了然后掏出手机,团了一家附近的餐厅吃饭。 走进餐厅,门口写着: 手机自助点餐,立减5元,还能享受免费wifi。 A找了一个桌子坐下,发现桌子上贴着二维码,nfc标签和一个网站,A果断掏出手机, 由于没有nfc,扫了下桌子上的二维码,手机自动连上wifi并打开餐厅的订餐页面。 菜品很新,有多张图和详细的描述,还有之前吃过人的评价。A点了人气最高的三个菜品, 并信用卡付了款。对了,他还用了上次来送的饮料劵,他居然忘记去年不知道啥时候来过 这家店了,还好送的劵下个月过期。 A连着wifi刷了微博,找了几个最热的段子和女朋友分享,不到10分钟菜就上来了。嗯, 份量足,色香味俱全。酒足饭饱之后,A忍不住给了个5星好评。 叮咚,老板又送了一张饮料劵~

March 1, 2014 · 1 分钟 · ming

穿戴式设备的杀手级应用

现在各大厂商对穿戴式设备的投资如火如荼,这也符合智能能便携设备的越小,越轻,越方便携带的特性。 其中两个典型就是 智能腕表 和 智能眼镜。 据传苹果,三星,索尼 LG等都在开发类似设备, 而GOOGLE的智能眼镜甚至已经在大规模试用。 ...

March 25, 2013 · 1 分钟 · ming

highlight the current navigation

Why do we need highlight the current navigation? Best pratice suggests that we should always indicate links to the page the user is currently on. It’s a very common and reasonable request when we involved in the UI development. ...

March 18, 2013 · 1 分钟 · ming

Bootstrap Basic

According to the offical website: Bootstrap is a sleek, intuitive, and powerful front-end framework. Made for faster and easier web development. How to put Bootstrap to use? Simple! Just download the bootstrap. ...

March 8, 2013 · 1 分钟 · ming

How to use PLACEHOLD.IT

Do you ever heard of PLACEHOLD.IT ? What’s PLACEHOLD.IT ? A quick and simple image placeholder service. How does it work? Just put your image size after our URL and you’ll get a placeholder. ...

March 7, 2013 · 1 分钟 · ming