<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jeff&#039;s Blog</title>
	<atom:link href="http://www.jefflei.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.jefflei.com</link>
	<description></description>
	<lastBuildDate>Mon, 18 Jan 2010 08:34:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Facebook SNS游戏排名</title>
		<link>http://www.jefflei.com/post/1747.html</link>
		<comments>http://www.jefflei.com/post/1747.html#comments</comments>
		<pubDate>Sat, 19 Dec 2009 04:55:56 +0000</pubDate>
		<dc:creator>inetdemon</dc:creator>
				<category><![CDATA[电子商务]]></category>

		<guid isPermaLink="false">http://www.jefflei.com/?p=1747</guid>
		<description><![CDATA[最近半年前5大游戏排名没有变化，但是一年前最流行的(Lil) Green Patch只有600万MAU,但现在，冠军FarmVille，则是有近6900万使用者。此外，数据显示，Facebook每月超过300万MAU的成长都來自Socail Gaming的贡献。
Top10中有过半的游戏都是由Zynga出品，占了6款，分別是FarmVille、Cafe’ World、Mafia Wars、FishVille、Texas HoldEm Poker和YoVille 
11月被EA收购的PlayFish在Top 10只占了两款，分別是Pet Society和Restaurant city，而且Restaurant city竟然是呈负增长的状态，流失近70万的玩家。
]]></description>
		<wfw:commentRss>http://www.jefflei.com/post/1747.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>易趣10周年聚会</title>
		<link>http://www.jefflei.com/post/1704.html</link>
		<comments>http://www.jefflei.com/post/1704.html#comments</comments>
		<pubDate>Sat, 19 Sep 2009 06:01:08 +0000</pubDate>
		<dc:creator>inetdemon</dc:creator>
				<category><![CDATA[互联网圈]]></category>

		<guid isPermaLink="false">http://www.jefflei.com/?p=1704</guid>
		<description><![CDATA[9月11日参加了海伦宾馆的易趣10周年聚会，虽然比不上阿里10周年纪念的规模，但也有不少人参加了，看到了一些很久没有见到的老同事，还是挺激动的。为了节约笔墨，上点图。

]]></description>
		<wfw:commentRss>http://www.jefflei.com/post/1704.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>购买办公座椅的经历</title>
		<link>http://www.jefflei.com/post/1662.html</link>
		<comments>http://www.jefflei.com/post/1662.html#comments</comments>
		<pubDate>Sat, 29 Aug 2009 05:31:13 +0000</pubDate>
		<dc:creator>inetdemon</dc:creator>
				<category><![CDATA[家居生活]]></category>

		<guid isPermaLink="false">http://www.jefflei.com/?p=1662</guid>
		<description><![CDATA[电脑工作者通常都有职业病，如颈椎痛，脊椎痛等，年轻时生龙活虎的不觉得，5，6年后方才开始慢慢有所体会。我有一次去检查脊椎，医生说脊椎和颈椎已经钙化，骨龄比我实际年龄要老十几岁。想想在按摩方面的花费这几年来也不止几千，如果一把椅子能够端正坐姿，使得腰背更健康，那比打针吃药按摩还 治不好要来得划算得多。
至于是否应该买一把5，6千元乃至上万的椅子，我觉得台湾的一个网友说得好，请看：
我覺得有幾個指標，可以促使大家決定『是否要買一張這麼貴的椅子』：

每個月花在按摩整脊的費用超過2000元。
每天坐在爛椅子上超過8小時
屁股大腿常常悶熱無比
常常靠說脖子酸、手酸、肩膀酸、腰酸
貼立康、虎標、肌樂是你的好友


所以把我用过的和了解的一些办公座椅及其品牌介绍一下
震旦AURORA
在钢质椅子方面较强。最早的时候买过一些震旦的办公桌，没有买过震旦的椅子。
美时Lamex
公司新开的时候买了些二手的美时椅子，还算是耐坐。香港的牌子，质量还算不错，耐坐。和震旦一样算是很不错的选择。2006年被全球办公家具三强之一的HNI集团收购。而另外一个和美时超不多的香港品牌欧美/Ultra也在2007年被最大的办公家具公司Steelcase收购。
海沃氏Harworth
这家也应该算是全球帮工家具的前三强，他们家的家具看上去就是很耐用的感觉。中国区的总部就设在上海的新天地，在浦东有工厂。
Steelcase
因为以前公司用的都是Steelcase的Let&#8217;s B系列，所以印象很好，属于价廉物美了。这次到在Steelcase工作的朋友那里，听说淘宝一口气定了3000把。

Steelcase的Think系列也是获得多项设计大奖的经典款，很多公司在会议室中使用，也有不少公司作办公椅用。


这张照片显示google的office里用的也是steelcase think系列。
赫尔曼.米勒Herman Miller
Herman Miller的Aeron系列是该公司最畅销的椅子之一，由于其经典的人体工学设计，该椅子由Bill Stumpf设计，被收录为纽约现代艺术博物馆永久陈列品。

有些网友甚至拍摄了 Aeron Chair开箱全过程
Aeron之经典实在难以超越，因此Herman Miller在去年才推出了其最新款Embody，当然售价也相当的令人乍舌，基本款为12000元左右，而高配的款式则要18000元一把，淘宝上随便搜索下就知道了。当然无论从价位还是设计来看，似乎都不是很适合普通办公用途。

岗村制作所
意大利设计师所设计的Contessa

]]></description>
		<wfw:commentRss>http://www.jefflei.com/post/1662.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>ZF1.8 DB字符集设定</title>
		<link>http://www.jefflei.com/post/1639.html</link>
		<comments>http://www.jefflei.com/post/1639.html#comments</comments>
		<pubDate>Mon, 10 Aug 2009 16:41:54 +0000</pubDate>
		<dc:creator>inetdemon</dc:creator>
				<category><![CDATA[程序开发]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.jefflei.com/?p=1639</guid>
		<description><![CDATA[Zend Framework的db 字符集设置，由于ZF的一个bug，以前在设置db的字符集为utf-8时，通常是在bootstrap中设定
 $db = Zend_Db::factory($this-&#62;_config-&#62;db);
 $db-&#62;query("SET NAMES utf8");  //setup encoding
这种做法的一个缺点就是DB的lazy loading机制变得无效，所有不调用数据库的页面也需要去打开一个数据库链接。困难之处在于每种数据库的charset名称并不相同，之前一直有一个提议，将charset做一个db的option来设置，ZF1.7开始将这个建议实施，现在我们可以用如下方法，设置db的option
 &#60;?php
$db = new Zend_Db_Adapter_Pdo_Mysql(array(
'host'     =&#62; 'your_host_or_ip',
'username' =&#62; 'your_myslq_username0,
'password' =&#62; 'mysql_pass',
'dbname'   =&#62; 'your_db_name',
'driver_options'  =&#62; array(PDO::MYSQL_ATTR_INIT_COMMAND =&#62; 'SET NAMES \'utf8\'')
));?&#62;
除此之外，还可以在config中设置，不过由于config文件并不认得常量，因此只能用以下方式来设置：
db.params.driver_options.1002 = &#8220;SET NAMES utf8&#8243;
其中1002即PDO::MYSQL_ATTR_INIT_COMMAND这个常量的值。
如果想直接修改DB的charset collocation可以参考mysql的charset转化指南。
感谢 julian的提醒，自从ZF1.8开始已经可以使用db.param.charset=&#8221;UTF-8&#8243;来设定; 如果使用的是Zend_Application,可以设定resource.db.params.charset=&#8221;UTF-8&#8243;.


Related posts:ZF1.8 快速上手



Related posts:<ol><li><a href='http://www.jefflei.com/post/1505.html' rel='bookmark' title='Permanent Link: ZF1.8 快速上手'>ZF1.8 快速上手</a></li>
</ol>]]></description>
		<wfw:commentRss>http://www.jefflei.com/post/1639.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>美国Steelcase公司介绍</title>
		<link>http://www.jefflei.com/post/1654.html</link>
		<comments>http://www.jefflei.com/post/1654.html#comments</comments>
		<pubDate>Fri, 07 Aug 2009 15:12:23 +0000</pubDate>
		<dc:creator>inetdemon</dc:creator>
				<category><![CDATA[家居生活]]></category>

		<guid isPermaLink="false">http://www.jefflei.com/?p=1654</guid>
		<description><![CDATA[Steelcase在1912年成立于美国密歇根州大瀑布城(Grand Rapids，Michigan)，名为The Metal Office Furniture Company。1914年，获得首个专利——金属纸篓，成功解决了传统草编纸篓易燃的弊端，是当时一项重要发明品；随后，又研发了金属办公桌。沿着这条创新之路，Steelcase不断开发产品与服务。今天，Steelcase的产品仍贯彻办公环境的三个核心元素：室内结构、办公家具与精湛技术。1954年，企业更名为Steelcase，并于1988年上市。
公司大事记
1912-在美国密歇根州大瀑布市创立了Metal Office Furniture Company，公司专门生产文件柜和保险箱。
1915-销售首张防火钢板办公桌。
1937-Metal Office公司采用Frank Lloyd Wright的设计，生产椭圆形办公桌，这些办公桌用于美国庄臣公司办公大楼――财富杂志将其称为“20世纪最富想象力的办公大楼”。
1954-公司名称更改为Steelcase。
1968-引进Mobiles®专利产品，这是第一种使用系统家具概念的产品。
1972-开始采用木材制造办公家具。
1973-与Kurogane有限公司在日本大阪组建了一家合资企业，公司占有25%的股份。
1974-与Strafor S.A.公司在法国特拉斯堡组建了一家座椅合资生产企业，公司占有50%的股份。
1980-收购西德多特蒙德市Pohlschroder GmbH &#38; Company KG公司50%的股份。
1981-收购Strafor S.A.公司及子公司50%股份，包括法国的5家制造和组装厂以及非洲的4家制造厂。
1987-组建Steelcase设计合作伙伴，这是由多家高端设计、领导市场的家具公司组成。
1989-Steelcase开设了企业开发中心作产品研发，企业开发中心的成立让Steelcase公司成为家具行业中拥有最大的研究专家。
1990-在美国设立Steelcase设计合作伙伴公司Details。
1992-Steelcase推出了可供信息管理的全球储存柜系列。
1993-与泰国领导的办公家具生产商Modern form Group Company Ltd.签订许可协议。
1995-Steelcase Inc.宣布与Godrej &#38; Boyce签订许可协议，成为首家踏足印度市场的大型家具生产商。
1996-Steelcase宣布向美国加利福尼亚州Palo Alto市最大的一家独立生产和开发公司IDEO进行产权投资。
Steelcase位于德国Rosenheim及法国Sarrebourg的制造厂荣获ISO14001认证。
1997-Steelcase-Werndl位于德国Rosenheim制造厂荣获EMAS认证(环境管理及审查计划)。
Steelcase收购德国Durlangen的Waiko Büromöbel GmbH公司。
1998-Steelcase推出欧洲最畅销的办公桌组合TNT。
Steelcase在纽约证券交易所上市。
Steelcase推出欧洲最受欢迎的办公椅Please。
1999-Steelcase收购Strafor Facom S.A.公司的其余股份。
Steelcase推出高效能产品Leap®座椅。
2000-Steelcase GmbH成为控股公司，Pohlschröder GmbH成为集团公司之一。
Orgatec展览中展示了Werndl’s成为Steelcase集团一份子后首次推出的产品。
2001-Werndl Büromöbel AG正式改名为Steelcase Werndl AG。
Steelcase成为财富500强公司之一(美国500大公司)。
Steelcase在密歇根州的全新制木家具工厂，成为全球首家荣获LEED (Leadership in Energy and Environmental Design)认证的工厂。
Steelcase与在东南亚占领导地位的马来西亚Artwright Holdings Berhad公司签订制造厂协议。
Steelcase收购PolyVision公司，专门制造视觉沟通工具。
2002-IBM和Steelcase宣布开展一项名为BlueSpace的全球性计划，对未来办公室进行设计。创造出将建筑、家具与先进科技结合在一起的创新工作环境。
“最受赞赏的公司”是《财富》杂志在全国对企业按其具有的社会责任感进行的排名，其中Steelcase列第六。
2003-Steelcase引入灵感办公室的概念，提供了以科学为基础的顾问过程，企业可引导员工发挥所长，以及改善公司整体效率。
Steelcase在Best of NeoCon评选中，赢得6项金奖、3项银奖。
Steelcase密歇根工厂在进行金属表面处理时，成功消除几乎全部有机挥发物(VOCs)的排放，这是公司另一环保里程碑。
Steelcase宣布与Johnson Controls公司成为合作伙伴，共同研发把Leap® 技术用于汽车座椅上。
2004-Steelcase推出Think座椅—这是种明智、简单及环保的座椅产品，满足客户对中等价位座椅的需求，更符合人体工学原理。此产品在芝加哥的年度展会上赢得最佳NeoCon项奖。
在德国科伦举办的全球最大办公室展览Orgatec上，Steelcase推出最新产品- Think座椅以及全新办公建筑系统Forward。
2005-Steelcase在英国Design Prima展览中展示Forward产品。
2006-Steelcase加入U.S. Environmental Protection Agency的Climate Leaders计划，这是一项工业部门与政府的合作计划，旨在开发综合性的长期应对气候变化。参加计划后，Steelcase承诺将减少温室气体排放。
Steelcase International在法国斯特拉斯堡附近，设立了新的全球总部WorkL@b，其引入激发创意的设计，既配合Steelcase的国际文化，也提高雇员的工作经验。
Steelcase的工业城（City [...]]]></description>
		<wfw:commentRss>http://www.jefflei.com/post/1654.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>美时办公家具有限公司</title>
		<link>http://www.jefflei.com/post/1655.html</link>
		<comments>http://www.jefflei.com/post/1655.html#comments</comments>
		<pubDate>Wed, 05 Aug 2009 15:14:30 +0000</pubDate>
		<dc:creator>inetdemon</dc:creator>
				<category><![CDATA[家居生活]]></category>

		<guid isPermaLink="false">http://www.jefflei.com/?p=1655</guid>
		<description><![CDATA[美时Lamex自1977年成立以来已发展成为中国最大的家具生产商，代理世界各地著名品牌如Frezza, Forma, Sedus, Dauphin, Girsberger等。另外，美时亦致力设计，研发及生产美时的家具，提供过千种产品。美时现时拥有超过50多家特许经营商及分行遍布中国、香港、澳门 及台湾。
美时已发展为首屈一指的家具生产商。生产厂房位于东莞，面积超过十万平方米，为国内最大型的生产厂房。主要生产线分为四种，包括屏风家具系列，办公桌, 文件储存系统及办公室座椅。LAMEX厂房为一所综合大楼，集生产厂房，品质测试中心，设计及发展，货仓，行政中心，培训中心及陈列室等，使公 司运作更有效率。
公司大事记：
1977-美时公司成立
1978-首家香港办公室家具公司提供5年产品保用
1989-首家香港办公室家具引入本地屏风系统生产线
1990-开始进入中国市场
1991-首家香港办公室家具公司提供电脑绘图和电脑生产线
1992-所有座椅产品采用不助燃海绵
1996-自行研发革命性的支柱式屏风系统 &#8211; 338屏风系统
1997-首家办公室家具公司在国内引入特许经营方式
美时创办人林正华先生获颁香港青年工业家奖
1998-338屏风系统于广州国际家具展获得金奖
1999-美时获得国际ISO9002品质认证
2001-美时投资二百五十万美元引入CNC Combima先进生产技术
美时为APEC会议的指定会议家具供应商
2002-美时荣获香港十大名牌
2003-美时荣获广东十大名牌，ISO9001及IQ Net
2004-美时荣获ISO14025 III 型环境认证。
美时获香港社会服务联会颁发“商界展关怀”。
2005-美时再度荣获“香港名牌”的奖项以及“商界展关怀”的嘉许状。
美时的销售员荣获“杰出推销员奖”。
]]></description>
		<wfw:commentRss>http://www.jefflei.com/post/1655.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.8 中的Model</title>
		<link>http://www.jefflei.com/post/1534.html</link>
		<comments>http://www.jefflei.com/post/1534.html#comments</comments>
		<pubDate>Fri, 31 Jul 2009 23:36:19 +0000</pubDate>
		<dc:creator>inetdemon</dc:creator>
				<category><![CDATA[程序开发]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.jefflei.com/?p=1534</guid>
		<description><![CDATA[在ZF1.8以后Module的问题得以完善，但是仍然有很多领域需要改进，Model就是其中一个
Model的类型用DbTable&#60;-&#62;Mapper&#60;-&#62;Model的DataMapper Pattern (同时参照IdentityMap和UnitOfWork)来调用，其中对象Model用于导入对象，导入后就由UOW拥有的Identity对象来跟踪，以此来保持数据的同步。比如一个Users表，我们有如下类:
Model_User是业务域模型(domain Model)，关于domain design的模式可以参见domain driven design一书。
Model_UserMapper来完成Model对象和数据库的映射关系
Model_DbTable_Users extends Zend_Db_Table_Abstract类负责数据库方面的设定
以上pattern的使用在这篇帖子和Zend 的proposal中有讨论到。这个Pattern的好处是，如果你将来不用数据库来保存数据，而换用文件或者Memcached，那么你就不用修改你的Controller了；从来引来的一个缺点是几乎每个调用都需要来定义Mapper，从而导致复杂度提高。通常情况下对于不是比较复杂的情况，1:1的应用来说，Table Gatewy, Row, Rowset的Pattern已经足够使用。
关于DataMapper的Model使用模型还在更新过程中，同时还有个datashuffler在ZF上的实现目前也在研究中。
]]></description>
		<wfw:commentRss>http://www.jefflei.com/post/1534.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ZF1.8 快速上手</title>
		<link>http://www.jefflei.com/post/1505.html</link>
		<comments>http://www.jefflei.com/post/1505.html#comments</comments>
		<pubDate>Wed, 29 Jul 2009 22:03:09 +0000</pubDate>
		<dc:creator>inetdemon</dc:creator>
				<category><![CDATA[程序开发]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.jefflei.com/?p=1505</guid>
		<description><![CDATA[ZF有段时间没有弄了，自从ZF1.8出来之后改动比较大，把一些东西整理一下，温故而知新。
首先是下载ZendFramework，由于ZF的版本更新很快，一些小版本基本是2周出一次，下载最新的ZF，下载后将ZF放到系统类库目录，我们假设是/usr/local/lib/,
其次，将ZF添加到系统目录中去，可以修改php.ini(如果不确定php.ini所在目录，可以通过phpinfo查看），在include_path中增加如下目录：include_path=&#8221;.:/path/to/zf:/usr/share/php:/usr/share/pear&#8221;，对于以ZF为主的系统，将ZF包含目录放在最前面有助提高效率，详细请看这篇文章。在进行下一步之前，我们需要先确定目录构造，请参见ZF所推荐的Zend Framework的目录结构。
开始工作，首先index.php比较简单：
&#60;?php

// Define path to application directory
defined('APPLICATION_PATH')
 &#124;&#124; define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
 &#124;&#124; define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
 realpath(APPLICATION_PATH . '/../library'),
 get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';  

// Create application, bootstrap, and run
$application = new Zend_Application(
 APPLICATION_ENV,
 APPLICATION_PATH . '/configs/config.ini'
);

$application-&#62;bootstrap()
 -&#62;run();
接下来是bootstrap.php我最开始写ZF的时候最麻烦的部分就是bootstrap，花了不少时间调试。Bootstrap，顾名思义就是系鞋带，指出发之前做的准备工作。自从Zend Framework 1.8以后，ZF出了Zend_tool和Zend_Application,因此Bootstrap有了比较大的调整，基本来讲，只需要在index.php中调用Zend_Application，就可以直接免去过去设定config文件，DB，view等。如果需要对这些做特别设置，可以在Bootstrap中扩展Zend_Application_Bootstrap_Bootstrap，用_init*资源函数来设定，BootStrap将依顺序逐个调用这些_init*资源函数，然后执行dispatch。用这里有篇是介绍如何将老的Bootstrap迁移到ZF1.8上。需要注意的有几点，
1.  在initView的时候尽量不要标注Response属性，这样这个Bootstrap不会在layout之前实例化Response；
2.  可以判断ajax的request头，用以去除layout, ViewRender,errorHandler和Exception的输出，这样就免除在ajax页面里面单独进行设定了。
3. ZF1.8之后可以通过设定driver [...]


Related posts:<ol><li><a href='http://www.jefflei.com/post/1639.html' rel='bookmark' title='Permanent Link: ZF1.8 DB字符集设定'>ZF1.8 DB字符集设定</a></li>
</ol>]]></description>
		<wfw:commentRss>http://www.jefflei.com/post/1505.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>thinkvantage中没创建恢复介质(Create Recovery Media)的解决方法</title>
		<link>http://www.jefflei.com/post/1409.html</link>
		<comments>http://www.jefflei.com/post/1409.html#comments</comments>
		<pubDate>Fri, 08 May 2009 03:13:42 +0000</pubDate>
		<dc:creator>inetdemon</dc:creator>
				<category><![CDATA[软件和工具]]></category>

		<guid isPermaLink="false">http://www.jefflei.com/?p=1409</guid>
		<description><![CDATA[享受了一个多月碧波帮我带回来的新的ibmT500(2242CTO)到手，感觉速度真是比台式机还快。不过这两天发现两个问题，足见ibm易主lenovo后服务是越来越差。其一是一项以商务服务著称的thinkpad从4月开始停止了自动system update服务，用户更新驱动程序需要手动到联想网站上查询后下载。联想的thinkpad笔记本论坛里面是议论纷纷。
另外一件不太方便的事情是我的think vantage中没有创建系统恢复盘的功能，于是查了下美国的lenovo论坛中有篇说明是由于选择的Vista downgradable to XP造成的, 无奈只能按坛子里面的指示直接调用&#8221;C:\Program Files\Common Files\Lenovo\spi\RRMedia.exe&#8221;, 看来lenovo的走向也越来越不是面向商业用户，而是走向低端化了。另外创建恢复盘的话，XP是1CD+1DVD or 7CD, vista是1CD+2DVD, 必须要CD的。
配置如下:
Core2 Duo T9400 2.5Hz(6M L2)/2G DDR3/160G SATA2 7200/LED backlight/集成显卡ATI X4500HD/Vista downgradable to XP Professional/Displayport
]]></description>
		<wfw:commentRss>http://www.jefflei.com/post/1409.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>XSS攻击防范</title>
		<link>http://www.jefflei.com/post/1239.html</link>
		<comments>http://www.jefflei.com/post/1239.html#comments</comments>
		<pubDate>Wed, 22 Apr 2009 16:28:07 +0000</pubDate>
		<dc:creator>inetdemon</dc:creator>
				<category><![CDATA[程序开发]]></category>
		<category><![CDATA[互联网安全]]></category>

		<guid isPermaLink="false">http://www.jefflei.com/?p=1239</guid>
		<description><![CDATA[最近一个朋友找我帮忙修复一个XSS注入漏洞，其实网站也是某上市互联网公司的中国站。现在XSS和CSRF攻击成为一个WEB软件工作者不得不重视的一个问题，很有必要深入研究下。
XSS漏洞很容易在大型网站中发现，在黑客圈内它非常流行。最著名的是2005年黑客Sammy Kamkar在myspace网站发布蠕虫病毒后，XSS就开始大行其道。FBI.gov、CNN.com、Time.com、Ebay、  Yahoo、Apple、Microsoft、Zdnet、Wired、Newsbytes，twitter都有这样那样的XSS漏洞。国内出现过XSS漏洞的网站有sohu，网易邮箱，校内网等，百度和著名电商网站淘宝也曾出现过XSS漏洞。
在商业产品中，平均每个月能够发现10-25个XSS漏洞。
假设你已经了解XSS的基本概念和类型，这里看看如何进行防范。先总结一下常见的XSS攻击手法：
依赖跨站漏洞，需要在被攻击网站的页面种入XSS脚本的手法
Cookie 盗取，通过javascript 获取被攻击网站种下的cookie，并发送给攻击者。
1.从cookie 中提取密码等隐私
2. 利用cookie 伪造session，发起重放攻击
Ajex 信息盗取，通过javascript 发起ajex 请求。
1. 从ajex 结果中获取隐私。
2. 模拟用户完成多页表单。
不依赖跨站漏洞的XSS攻击手法
1. 单向HTTP 动作，通过img.src 等方法发起跨站访问，冒充被攻击者执行特权操作。但是很难拿到服务器的返回值。
2. 双向HTTP 动作，如果服务器产生一段动态的script，那么可以用script.src 的方法发起跨站访问并拿到服务器的返回值。
XSS防范方法
XSS攻击防范主要是有程序漏洞造成的，要完全防止XSS安全漏洞主要依靠程序员较高的编程能力和安全意识，当然一些编程安全原则可以帮助大大减少XSS安全漏洞：

不信任用户提交的任何内容，对所有用户提交内容进行可靠的输入验证，包括对URL、查询关键字、HTTP头、REFER、POST数据等，仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交，对其他的一律过滤。尽量采用POST 而非GET 提交表单；对”&#60;”,”&#62;”,”;”,”’”等字符做过滤；任何内容输出到页面之前都必须加以encode，避免不小心把html tag 弄出来。
实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查，以防功能被第三方网站所执行，对于用户提交信息的中的img 等link，检查是否有重定向回本站、不是真的图片等可疑操作。
Cookie 防盗。避免直接在cookie 中泄露用户隐私，例如email、密码等等；通过使cookie 和系统ip 绑定来降低cookie 泄露后的危险。这样攻击者得到的cookie 没有实际价值，不可能拿来重放。
确认接收的的内容被妥善的规范化，仅包含最小的、安全的Tag(没有javascript)，去掉任何对远程内容的引用(尤其是样式表和javascript)，使用HTTP only的cookie。

PHP方面请参见PHP的安全防范工作
ASP.Net的可以用VS自带的XSSDetect来检测。
要更好的防范XSS和CSRF攻击等，除了加强程序开发的严谨度之外，还需要重视测试工作，通过专业的测试来减少问题发生的可能性，我们看到淘宝QA也重视XSS攻击测试了。
]]></description>
		<wfw:commentRss>http://www.jefflei.com/post/1239.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
