逃出你的肖申克(一)

Posted on

逃出你的肖申克(一)

前言:《逃出你的肖申克》这个题目我早就放在心中,一直想写一写,但一直没有找到恰当的切入点。上次一个偶然的时候,发现可以以对一些人们常常放在嘴边的俗语进行解释为入口,以一年多来学习的关于思维的知识为基础,展开来说一些也许有用的东西,也刚好是对学过和思考过的东西的总结和整理,如果你在看过上次发的“如何清晰地思考——知识结构图”之后发现要读的书太多,无法下手的话,不妨将这个系列作为一个更详细的引路图,注意文中的各个超链接,他们都指向有价值的资料,引用出去的资料的价值远远大于这篇文章本身。

——每个人心中都有一座肖申克




(一)为什么我们常说很多时候一定要亲身经历了之后才能明白?

将安全开发流程扩展到云和大数据

Posted on

将安全开发流程扩展到云和大数据

将安全开发流程扩展到云和大数据 发布于2013-5-29 简介:

云计算和大数据正在改变着企业。了解必须将这些新技术融入您的安全开发流程的原因,并了解什么是安全开发流程、云计算和大数据技术的组成部分,以及它们存在哪些应用程序安全风险和如何减轻这些风险。

2012 年有关应用程序安全状态的 Ponemon Institute 报告(参阅 参考资料)表明,“71%的开发人员认为安全性在软件开发生命周期中没有得到充分重视”。这种说法令人非常困惑,因为各个组织现在已经在他们的安全系统开发生命周期 (SDLC) 中引入了新技术。这些新技术(即云计算和大数据)将进一步增强组织的安全开发流程(如果组织有这样的流程)。

本文从应用程序安全性的角度概述了云计算和大数据、它们的缺陷和弱点,还介绍了如何使用一个安全的 SDLC 进程在这些平台上安全地开发应用程序。

安全开发入门

要将云和大数据引入安全的 SDLC 流程中,必须先将安全性引入到组织的 SDLC 中并始终遵循它。SDLC 是一个开发流程,该流程侧重于开发优质软件的五个阶段:需求、设计、开发、测试和实现。组织必须在这一流程的每个阶段都引入安全性。无论是使用特定的过程模型(如 Microsoft? 的安全开发生命周期(SDL;参见 图 1)或 (ISC)2> 的最佳实践(参见 图 2)、利用 Open Web Application Security Project (OWASP) 的最佳实践,还是引入自定义框架来实现该操作,SDLC 现在都是开发团队的必要条件。

图 1. Microsoft 的 SDL 流程

图 2. (ISC)2 的安全编码最佳实践

云计算入门

除了了解什么是安全的 SDLC 流程之外,组织还需要了解什么是云计算,以及云计算如何帮助组织寻找规模效益,并让组织重新专注于组织的核心竞争力。如果您愿意的话,还可以使用云计算重塑旧的应用程序服务提供商 (ASP) 模式。然而,真正的云计算产品会在 ASP 模式方面有一些细微的差别,也就是说,在资源池、按需功能、多租户和快速弹性方面存在细微差别。这些特性意味着,在使用云计算的时候,您可以通过将固定的资本支出 (CapEx) 转换为可变的运营支出 (OpEx) 来获得规模效益。

美国国家标准与技术研究所 (NIST) 已经通过建立云服务模式和云部署模式进一步定义了什么是云计算。云服务模式 是一些方法,组织可以通过这些方法根据需要使用云计算,这些模式包括基础架构即服务 (IaaS)、平台即服务 (PaaS) 或软件即服务 (SaaS)。请注意,云计算用户使用 IaaS 获得的灵活性最大,使用 SaaS 获得的灵活性最小。但是,IaaS 提供的灵活性向云计算用户提出了治理、监视和管理环境的要求。因此,对于 IaaS,用户需从操作系统层开始构建(虚拟)服务器。对于 PaaS,用户需构建数据库、应用程序、业务规则和加载数据。对于 SaaS,用户只需将数据加载到预先构建的应用程序中。

NIST 还定义了云部署模式,其中包含公共云、私有云、混合云和社区云(参见 图 3)。例如,Google Docs 就是公共云模式的一个示例,其中应用程序和数据存储在 Google 的数据中心的某些位置。在此模式中,用户实际上在 Google “高层” 公寓中拥有一个楼层。

图 3. NIST 云

大多数组织会采用私有云的方式在内部利用云计算。在自己的数据中心利用云的细微差别(例如,资源池、按需功能、多租户或快速弹性)进行信息处理的组织就是私有云的一个示例。请注意,您也可以在云服务提供商 (CSP) 的设施内拥有一个私有云。这方面的示例包括 Terremark 的客户,以及那些使用 Amazon Virtual Private Cloud (Amazon VPC) 作为他们的 Amazon Web Services? (AWS) 服务线(参见 图 4)的客户。混合用户的示例是一家制药公司,该公司使用私有模式来存储它的研究和开发数据,将该数据安全地(通过安全套接字层或传输层安全性)发送到公共云以便进行计算,然后将该数据发送回私有云。实际上,混合模式充分利用了公共云和私有云的优势。社区云很大程度上利用了资源池。这方面的一个示例是一个学区中的多所学校,它们共享了服务器资源,以便进行信息处理。

图 4. Amazon VPC

大数据入门

除了云计算之外,大数据也是行业的一个新范例。Oracle 将大数据 定义为聚合三个来源的数据:传统(结构化数据)、传感器数据(日志数据、元数据)以及社交数据(社交媒体)。大数据通常使用新的方式(如 NoSQL,Not only Structured Query Language)存储在非关系型的分布式数据库中。有四种类型的非关系型数据库管理系统(非 RDBMS):基于列的、键-值形式、图(Graph)和文件型。这些非 RDBMS 聚合源数据,分析程序(如 MapReduce)分析该信息。聚合并分析大数据之后,组织可以使用该信息进行市场研究、供应链研究、过程优化、安全事件分析或趋势分析。

大数据增值的方案包括提供市场研究数据以支持作出外包或内包、进行收购或兼并、进入新市场或离开市场的决定。被视为一种专供学术研究的技术之后,现在非 RDBMS 系统正在行业中逐步接近临界状态。领先的技术服务提供商(如 Twitter)开始使用它们,并且很多个人和公司也开始使用这些提供商的产品。由于这些平台的开放源代码的特性(会导致节约成本),非 RDBMS 正在成为使用 Web 2.0 技术的组织首选的数据库架构,因为组织无需在传统的关系型数据库软件许可或本地硬件方面进行投资。根据您的预算,我主张组织设置新的岗位来治理和管理大数据系统,而分析人员、编程人员、项目经理以及传统的 RDBMS 管理员都应该进行交叉培训。如何进行所有这些操作都基于组织的需求,但您会发现在这些已经利用大数据平台的组织(—Yahoo!、Facebook 等)有一个特殊的关注点。如果您的组织决定将专用资源合并到大数据,那么请记住,使用这些系统来增加您的现有 RDBMS 投资以便存储和分析大数据,这一点非常重要。

企业将继续同时使用 RDBMS 和非 RDBMS 系统。尽管这两种系统有一些相似之处,但也应该注意它们的差别。例如,非 RDBMS 将数据可分布到多个计算机系统上,当数据跨越多个管辖范围或跨越多个管辖范围共享时,非 RDBMS 会影响组织遵守隐私权的状态。非 RDBMS 通过是一个应用程序编程接口 (API) 调用的,而不是像 RDBMS 系统一样通过数据库连接(例如,Open Database Connectivity、Java? Database Connectivity)来创建、读取、更新和删除数据。非 RDBMS 与 RDBMS 在处理数据的方式上也有所不同。例如,非 RDBMS 中的表称为域 或命名空间(和在 Amazon DynamoDB 中一样,如 图 5 所示)。而且,非 RDBMS 数据定义语言或元数据 并不像在 RDBMS 中那样可以轻松查询。此外,大多数非 RDBMS 都不再使用 SQL 进行数据操作语言调用;很多都使用 NoSQL。最后,非 RDBMS 要求运行的 API 服务应该相对数据库服务器实例运行,这样通常会导致较低的 OpEx。

图 5. Amazon DynamoDB

将它们整合在一起

通过运行一个 API 服务(如 Gemini Cloudian),非 RDBMS 用户可以节省 CapEx 和 OpEx,而且可以使用非 RDBMS 技术轻松构建应用程序。CSP(如 AWS)目前正依赖于这项功能。AWS 有一个称为 Amazon SimpleDB 的产品,各种创业公司(如 Flipboard、Kehalim、Livemocha 和 LOUD3R)都使用该产品快速向市场提供解决方案。非 RDBMS 用户使用第三方软件产品(例如,Cloudian)将其 NoSQL 数据库连接到 Web 应用程序,或者编写他们自己的软件。组织使用了非 RDBMS 来体验增强的可伸缩性、弹性(分片)、模块性、可移植性和互操作性,同时还将 NoSQL 平台与编程语言(如 Java 语言,参见 图 6)、Web 2.0 技术(如 Ruby on Rails,这是一种侧重于动态内容的 Web 2.0 编程语言)、增强的 Web 服务架构或面向服务的架构结合使用。

图 6. 在 Amazon DynamoDB 中使用 Java

提示和技巧

大数据解决方案通常会与 Web 开发项目以及 CSP 提供的非 RDBMS/NoSQL 解决方案结合使用,因此将组织的安全 SDLC 流程扩展到云或大数据环境的第一步自然就是将该流程部署到 Web 开发项目中。由于 Web 或瘦客户端应用程序具有特定的脆弱性,如跨站点脚本 (XSS) 或跨站点请求伪造 (XSRF),因此开发团队应该了解如何为其环境编写安全软件,这一点非常重要。这方面的示例包括提供相应的培训和培养意识,针对 OWASP Top Ten 中发现的漏洞进行静态和动态应用程序安全测试 (DAST),更新威胁模型分析任务和工具,将组织的开发和质量保证 (QA) 环境扩展到云中,以便测试这类环境,以及如何重组大数据系统(例如,非 RDBMS/NoSQL)的深入防御战略。

OWASP Top Ten

注入

XSS

失效的身份验证和会话管理

不安全的直接对象引用

XSRF

安全配置错误

不安全的加密存储

限制 URL 访问失败

传输层保护不足

未经验证的重定向和转发

此处的重点是使用应用程序和中间件层来确保大数据(即非 RDBMS/NoSQL)系统的安全,因为这些后端解决方案利用了一个开放架构。要确保该架构的安全,组织必须在数据层之外提供其他的保护和控制,尤其当系统位于云中时。其他保护和控制的示例包括:

1、加密。数据在传输中,数据正被使用。

2、增强的身份和访问管理 (IAM) 解决方案。安全断言标记语言、表述性状态转移、双因素认证/一次性密码

3、添加一个明确的隔离或职责分离。也就是说,清晰地描述谁可以读取和写入更改、谁可以拥有和读取数据。

4、逻辑访问控制。虚拟防火墙、Web 应用程序防火墙(如 Imperva)、XML 防火墙、通过使用数据库防火墙(DBF,如 Oracle DBF)进行的数据库活动监视

5、启用增强的会计、审计和问责制实践。尤其值得一提是,将会使用安全信息和事件管理工具

在这些保护和控制就位之后,必须测试它们的有效性。但是,由于 CSP 限制了用户扫描其云环境的能力,因此可用于云的 DAST 产品有诸多局限性。除此之外,大多数漏洞扫描程序尚未更新其产品,没有提供对大数据环境的扫描。但是,从云的角度来看,这个规则也有一些例外,即 AWS 与名为 Core 的公司合作。Core CloudInspect 允许扫描组织基于 IaaS 的 Amazon Elastic Compute Cloud 实例。Microsoft? SQL Azure? 基于 PaaS 的解决方案还允许使用 McAfee 的 Database Security Scanner 测试云用户的安全性。除了这些例外情况之外,其他需要注意的是,组织可以减少因为没有使用最新的漏洞扫描程序而导致的风险,同时通过实现经验证安全的编码约定(比如将隐私和安全性融入设计中,编写事先准备好的声明进行输入验证)将代码部署到云或大数据系统。除了旧的扫描解决方案之外,组织还面临着有关测试云和大数据代码的其他挑战:将安全的、适当的更改与配置管理过程相融合。

路障和地雷

很多组织可能发现,采用执行更改和配置管理请求的方式将其安全 SDLC 进程扩展到云和大数据方面有一些挑战。当利用云进行开发或 QA 工作时,如果在开发/QA 环境内外检查代码,那么集成开发环境可能无法正常工作。因为缺乏通信,可能会导致需要进行额外的工作才能保持库中代码的一致性、保持代码最新而且没有缺陷。要减轻这种风险,组织需要通过单点登录将 IAM 平台扩展到它的开发环境。除了制定适当的变更和配置管理任务之外,组织还需要将威胁模型、攻击向量以及对第三方向量产品的测试融入其 SDLC 流程中。

在利用云或大数据时,组织必须将新的威胁模型、攻击向量以及对这些第三方产品和服务的测试整合到它的环境中。这方面的示例包括测试 CSP 的 PaaS 环境、测试基于应用程序的云或大数据环境,或者测试与第三方 Web 服务或 API 有关联的安全性。要融入的具体内容包括测试输入验证、内存溢出、加密密钥管理以及处理正常退出和不正常退出。

结束语

组织必须将一些特定操作融入其安全 SDLC 流程中,以这种方式缓解在企业中引入云或大数据所带来的风险。这些操作包括测试供应商软件和硬件产品的安全态势,更新更改和配置管理过程,了解现有安全评估工具的局限性,以及采用迭代方式将组织的安全 SDLC 流程扩展到 Web 开发项目中。这方面的知识再加上对云和大数据的组成的进一步了解,通过这些我们就可以了解云和大数据中发现的漏洞,并了解如何修复在云和大数据中发现的那些漏洞。根据 Ponemon 的研究,如果您的组织可以做到这一切,那么您将会成为精心挑选的少数组织之一。

参考资料

阅读 Ponemon Institute 的研究报告 "2012 Application Security Gap Study: A Survey of IT Security & Developers"。

查找有关 Hadoop 框架及其在行业中的应用情况的详细信息。

查找有关 NoSQL 和安全性的详细信息。

查找有关 OWASP Top Ten Web 应用程序漏洞的详细信息。

查阅 (ICS)2。

Amazon 的 AWS 为各种规模的组织和项目提供了基于云计算的技术托管。

浏览 developerWorks 云计算,您可以在这里找到宝贵的社区讨论,并了解与云计算相关的新技术资源。

关注 Twitter 上的 developerWorks。

了解有关 Microsoft 的 Windows Azure? 平台的详细信息。

了解有关 Core CloudInspect 的详细信息。

查看 Imperva。

来源: [http://www.uml.org.cn/yunjisuan/201305294.asp](http://www.uml.org.cn/yunjisuan/201305294.asp)

每位开发人员都应铭记的10句编程谚语

Posted on

每位开发人员都应铭记的10句编程谚语

每位开发人员都应铭记的10句编程谚语

所谓谚语,就是用言简意赅、通俗易懂的方式传达人生箴言和普遍真理的话,它们能很好地帮助你处理生活和工作上的事情。也正因如此,我才整理了10句编程谚语,每位开发人员都应该铭记他们,武装自己。

  1. 无风不起浪

别紧张,这也许只是一场消防演习

代码设计是否糟糕,从某些地方就可以看出来。比如:

a. 超大类或超大函数

b. 大片被注释的代码

c. 逻辑重复

d. If/else嵌套过深

程序员们通常称它们作代码异味(Code Smell),但是就我个人认为“代码警报”这个名字更为合适一些,因为它有更高的紧迫感的含义。根本问题处理不当,终将引火烧身。

译注:Code Smell中文译名一般为“代码异味”,或“代码味道”,它是提示代码中某个地方存在错误的一个暗示,开发人员可以通过这种smell(异味)在代码中追捕到问题。

  1. 预防为主,治疗为辅

好吧,我相信了

胆敢向用户收费

Posted on

胆敢向用户收费

作者:凝眸痴视 / 产品观察家我也要当观察家

设计表达心灵。

[核心提示] 如果你认为你的应用足够优秀,就勇敢的向用户收费吧!

碎片化的信息疯狂地冲击着每个人的知识体系,以至于不记录的话,你根本不会记得你在哪里看过了什么……好吧,其实我就是忘了本文引子的这句话是谁说的来着:“如果你不敢向用户收费,那说明你对自己的产品没有信心。”

最近,“唱吧”推出了唱吧金币,开始进行商业化试水(参考唱吧金币——商业化试水),照搬了 9158 模式,向用户收取费用。这个 2012 国内移动互联网的明星产品,以其庞大的用户量和较高的而用户活跃度预测,商业化前景值得期待。

说起收费,有两个有趣的争议话题可以顺带一提。第一个话题是去年底就开始的关于微信收费的流言,腾讯官方也多次在各种场合进行澄清,微信不会向普通用户收费。事实上,腾讯微生活团队已经开始向商家用户收取费用,这是另外一码事了。而第二个话题挺有意思,上个月盛大宣布网游“时空裂痕”回归计时收费,这在靠卖装备赚“不义之财”的国内网游产业中,真算得上一桩新闻。

回过头来,仔细想想最近互联网的不少服务,似乎回到了 10 年前向用户收费的模式上,按月收费、会员收费、免推送广告收费等等,让 70、80 后们体会到了一丝复古的情怀。即便如此,每个产品开始收费时,仍然小心翼翼,生怕触动用户敏感的神经,让用户像听到微信收费的流言一样,一片哗然——

难道,互联网不是免费的吗?

免费互联网的前世今生

今天,我们已经习惯了免费的互联网和免费的各项服务,然而,互联网真正的免费时代也仅仅是近十年的事情。这期间,免费带来的巨大多赢,也让大部分人眼镜碎了一地。

04 年,Google 以巨大的魄力推出了存储量高大 1 G的免费个人邮箱——Gmail,这个搅局者直接打了对手们一个措手不及,大量的用户成为了免费的受益者,而 Google 也成功利用 AdSense 广告服务转了个盆满钵满。之后的互联网,免费开始大行其道,还记得 09 年刘仪伟扯着嗓子在个分众的各个电子屏里大吼“360 杀毒,永久免费”么?几个月后,一个与全世界为敌的公司的产品,让收费杀毒软件们慢慢淡出了国内舞台,我们也再没有听到卡巴斯基那穿透时空的……刹车声。

到了今天,在移动互联网中,免费仍然是主要的趋势。以 App Store 为例,从 08 年到 12 年,收费应用占据比例下降了一半还多。如果你像我一样关注 iOS游戏,会发现多么有趣的游戏,只有等足够长的时间,都是可以免费下载到(植物大战僵尸、水果忍者都一样……)。

用户像《怪诞行为学》中所分析的那样,开心地、义无反顾地使用着免费的互联网。

互联网是不是免费的?

正如同“包邮”这两个有魔力的字,时常能让用户付更多钱(有时甚至超过商品本身比同质商品贵的价格)来选择购买某个商品一样,“免费”对用户的产生的吸引力超过了所有人的想象。

那么,让我们运用一些微观经济学的知识,借用经济学中最常用的例子,从解释自来水这些对于生命必不可少的东西是如此的便宜开始,来理解 Google 们是如何赚钱的,进而回答互联网是否免费这个问题。(参考萨缪尔森《经济学》)

上图就是水为什么便宜的原因,因为水是如此的多,使得供给-需求曲线在价格极低的位置相交,这也正是人们对于最后一单位水的价值的真实评估(即“边际效用”,远远低于“生命之源”的效用),我们用这个价格来购买每一滴水,于是我们可以甚至用它来冲厕所。而上图中的阴影部分则是我们从买水行为中赚到的部分,成为“消费者剩余”。

把这个图应用到互联网中,我们发现上图中的价格为0,我们最大限度地使用互联网,就能够得到最大的收益——这真是太爽了!然而,明眼人应该能看出,既然互联网服务的价格是 0,那么供给曲线与需求的交点在哪呢?

正如 Google 到今天仍自称是一个广告公司一样,目前互联网的服务的供给曲线并不是从 0 开始的,我们需要把风险投资、广告费等等因素算上,互联网服务的供给曲线实际上是从“负值”开始的!更令人震惊的是,在下面图的情况中,供给曲线与需求曲线的交点,实际上在0以下。也就是说,从一定意义上讲,互联网公司有理由向用户付费!(PS:目前向用户付费争取用户的模式已经丝毫不新鲜了。)

胆敢向用户收费

考虑到网络经济的“收益递增法则”,每个用户的加入对于收入的增长都有贡献,收益的增长在很长的区间内甚至能够让供给曲线向下发展,这里不再分析。可以肯定的是,在网络经济的环境下,供给曲线的爬升是非常缓慢的。

羊毛出在羊身上。当明白了免费的道理,你也就会明白,实际上互联网服务把成本通过广告等形式,分摊到了每一个用户的头上。从总体来看,每一个用户还是为享受的免费服务付出了费用。

世上没有免费的午餐。

回归收费和简洁

于是问题就出现了,并不是所有人都愿意以看广告的代价来享受“免费”的服务,从理性来看,付出一定费用或许更为划算(参考水的分析)。于是一些区别性的服务应运而生。

年初,豆瓣 FM 推出了按月收费服务,为高级用户提供更高音质、无广告推荐服务;诸多移动端 App,而微博客户端 Weico 为例,都有无广告的 Pro 版本。从本质来说,这些方案都是再尝试将免费的供求图回归到类似“水”的图上。

尽管 App Store 上免费应用的比例逐年提升,然而从本质上说,苹果生态圈却是鼓励付费的:App Store 以独立应用为单位将移动互联网组成一个相对关联性较弱的体系,而每个应用默认上是可以直接向用户收取费用来摊平成本的。这种“先购买,再享受”的方式,与互联网的“先使用,再付费”的方式是不同的。

容易发现,由于免费,移动互联网的不少服务迫于生存、发展压力,不断在服务上添加新功能和组件,工具应用纷纷开始平台化尝试(参考小工具,大作为),一些精美的小应用,变得不再简洁。

收费,似乎是维持小应用简洁、干净的最直接的方法。

做出有信心向用户收费的产品

教化用户永远是困难的。在所有人已经习惯了免费的今天,如何打开收费的突破口,告诉用户缴费能够得到更多,是横亘在收费面前的一座大山。

如前所述,网络游戏是一个非常好的借鉴,而 9158 模式也得到了一定成功,付费升级服务也在一定程度上取得了效果。

抛开惹人厌烦的广告和相对低值的服务,免费还给用户带来另一个困扰,即隐私的问题。我们生活中一个最常见的骗局,就是“我已阅读协议并同意”,谁读过冗长无聊的网站免责协议呢?而很多协议中就清清楚楚地写着网站服务会记录一部分用户操作,这些对于互联网服务上来说也具有很高的价值。在这种情况下,说不侵犯隐私是用户抱有的一个天真幻想未免刻薄,然而事实却的确如此。Snapchat“阅后即焚”模式的成功过,在一定程度上也印证了“隐私”对于用户的价值。收费似乎也可以从这里找到突破?

好吧,不管突破口在哪里,看不见的手始终会发生着主要作用。当免费低质的服务过多,用户对于高质并收费服务的需求一定会出现,我们只需要做出有足够信心收费的产品,等待时机就足够了。

也许,付费能够让我们我们享受更多简洁而精致的服务,而服务提供者可以少点苦苦挣扎。谁说创业者不能像 Nathan(参考2012,辞去工作的一年)那样,辞去工作,通过编写 App,去环游世界呢? 除非特别声明,极客观察均为极客公园原创报道,转载请注明作者及原文链接。 原文地址:http://www.geekpark.net/read/view/175769

逃出你的肖申克(四)

Posted on

逃出你的肖申克(四):理智与情感

By 刘未鹏 – January 23, 2011

医学上,对于一些罹患严重癫痫症的病人,一种万不得已但颇为有效的方法是切断其大脑的胼胝体。胼胝体是两个脑半球之间的信息高速通道,含有2亿多条神经纤维,一旦切断之后,两脑半球之间的沟通也就相当于从信息时代回到了石器时代。经过这类手术的不幸的病人被称为“裂脑人”。对裂脑人的研究发现了关于人类大脑的一些非常重要的性质,例如《改变心理学的40项研究》第一章“一个脑还是两个脑”里面提到的研究揭示出左右脑在空间感,视觉触觉,语言方面的一些深刻而有趣的差异。

《How We Know What Isn’t So》里面则提到另一则非常有趣的有关裂脑人的研究:我们知道,语言能力主要在左脑。对于裂脑人,我们将两幅不同的图画分别呈现给裂脑人的左脑和右脑,呈现给左脑的图画上面是一只鸡爪,而呈现给右脑的则是覆盖着皑皑白雪的牧场。这之后,让他从一堆图片中寻找能跟他看到的图片相匹配的图片。结果非常耐人寻味:裂脑人的左手(右脑控制)会去选择一把铁锹(铁锹铲除牧场上的白雪),而其右手(左脑控制)则会去选择一只小鸡(小鸡和鸡爪配对)。两个脑半球分别根据自己所掌握的信息选择了最匹配的图片。然而,最有趣的地方在于当实验者询问被试为什么选择这两幅图片的时候。裂脑人会说:“哦,很简单啊,小鸡有鸡爪,而铁锹用来铲鸡屎”。

我们不妨停下来,想一想这个实验所揭示的一个令人深思的事实:铁锹之所以被选择,其实际的原因是为了和雪场匹配——铲雪。然而,铁锹和雪场的这个联系仅仅只有右脑清楚,而右脑是没有语言能力的。语言能力在左脑。当被试被要求对他的选择用语言进行解释的时候,是左脑的Broca区域在说话,而左脑没法和右脑沟通,所以不知道铁锹实际是用来铲雪的,但是,左脑仍然还是不假思索的给出了解释,而且病人真心相信这个解释“很显然”,“很简单”。可见我们的理性大脑非常善于对自己的行为作出立即的,看上去合理的解释。

类似的一则关于超市购物的研究表明,人们倾向于购买货架上靠最右侧的袜子,尽管在实验中袜子是一样的。当被询问到选择的原因时人们会给出各种看似合理的解释,颜色质地什么的。可关键是,袜子是一样的!

以下这则经典实验(Maier的双绳实验(two-cord experiment))则被很多心理学书籍所引用,包括著名的《心理学与生活》:

实验者将两根绳子拴在房间的顶上,两根绳子相隔较远,一个人站在中间往两边伸出双臂是没法子同时够到两根绳子的,同样也别指望拽着其中一根去够另一根。而受试者的任务就是要将这两根绳子的末端拴在一起。房间里有钳子,镊子,杆子,加长绳子这些工具。