Web 2.0桌面与移动应用程序安全性设计

   访问控制、防火墙、入侵检测系统,以及入侵防御系统组成了一个完整的应用程序安全防线,向应用程序提供了全方位的保护。但是,这些机制并不能百分之百地防御网络应用程序攻击。因为这些应用程序是基于网络的,网络用户与应用程序进行的通讯支持直接的网络攻击,使得已建立的安全防线保护形同虚设。攻击者意识到了这一点,因此直接的网络应用程序攻击是当前大多数网络攻击类型。

  为了平衡这种状况,应用程序开发人员必须有意识来建立防御攻击的策略。他们必须要考虑一些构成一系列网络攻击方式的因素:

  大多数的网络应用程序开发人员都不是安全方面的专家,也不会意识到大多数存在的问题。

  许多开发人员都不会意识到网络应用程序开发中的最佳安全实践方式。

  功能通常最受人重视,而安全性问题都会在最后才会得到处理。

  部署网络应用程序的环境通常都会发生变化,包括应用程序代码自身的更新,以及基础设施的变化。有一些更改没有受到安全领域专家的足够重视。

  如果每一个应用程序开发人员都考虑以下因素的话,那么他们可以写出更好的代码。

  得到培训。

  查找建立的模式。

  将测试集成到开发计划之中。

  及早报告漏洞的存在。

  本文旨在帮助一些开发人员和部署人员,处理一些影响到 Web 2.0 应用程序的常见网络应用程序安全问题。文中还提供了一些关于移动设备特定安全性问题的介绍。

  常见的网络漏洞

  移动网络应用程序所遇到的网络安全性问题与桌面网络应用程序所遇到的情形很类似。学习更多关于这些问题和反制措施的资源库是 Top 10 Project on the Open Web Application Security Project(OWASP)网站(参见 参考资料)。

  接下来的部分介绍了开发人员必须理解的顶级问题。

  跨网站脚本

  在这种一般的攻击中,恶意代码会植入到第三方的受信网站之中。如果 HTTP 请求可以将其注入到最终 HTML 页面上的话,那么跨站点脚本漏洞就向这种攻击开放了。

  例如,一项服务会接受名为 image 的参数,来接受来自于文件系统的图片,来执行一些处理:

  http://somedomain/myImageProcessor?image=myimage.jpg

  一个入侵者可以通过向 image 参数插入 JavaScript 代码,来占用该应用程序。其意图是耗尽错误处理系统的资源。如果一个包含恶意脚本的出错信息会被生成的话,那么入侵者就可以利用这一点了:

  http://somedomain/myImageProcessor?image=myimage.jpg

  如果出错信息返回图片参数的内容,而不用筛选的话,那么代码就会封闭到

作为搜索关键字输入时的结果。脚本代码会在搜索结果中显示出来,代码会得到执行,而警告窗口也会显示出来。

图 3. 输入“JavaScript”作为 JavaScript 执行中的搜索词语结果


  反制措施

  按照下面的方法来避免跨网站脚本(XSS):

  不要向用户显示不受信任的输入。

  采取措施预处理输入与输出,以删除恶意代码,例如筛选或者 白板列表(定义什么是允许输入的,什么是不允许输入的)。

  Encode 输出以避免浏览器执行。

  对于 Altoro Mutual 来说,一个简单的修复操作将不会返回搜索结果。

  为了进一步深入讨论跨网站脚本以及预防措施,您可以阅读 developerWorks 文章“IBM Rational AppScan:跨站点脚本攻击深入解析”,或者在 Open Web Application Security Project(OWASP)培训页面上了解到关于跨网站脚本的内容。(参见 参考资料 以得到资源的链接)。

  SQL 注入

  这种攻击同样关注于找到请求的缺点,然后向网络呈现的输入区域插入一个 SQL 条目。能够插入查询作为输入区域一部分的入侵者可以轻松绕过一个网站的认证机制,并访问数据库。这种攻击,与跨网站脚本一起已经泛滥了。

  这种范例向您展示了怎样使用 SQL 注入来耗尽一个结构糟糕的登录应用程序:

  一个网络应用程序会催促您输入一个用户名和密码来进行登录,而 SQL 语句是按照下面的方式组织的:

  String query = "SELECT * FROM users WHERE user ='"username+"' AND password ='"passwd"'";

  变量 username 以及 password 没有得到细致的处理,并分配给用户在应用程序中输入的值。这就使得一些恶意的用户可以输入 username 之类的值:

  anything' OR 1=1 --

  密码可以是任意值。在这种情况下,假设它是一个星号:*。

  对于输入来说,当代码替换 username 以及 password 变量时,结构化的查询是:

  SELECT * FROM users WHERE username ='anything' OR 1=1 -- AND password ='*'

  该语句解释了密码需求,并插入状况 1=1,这条语句的值一直都是真的。就算没有相关的权限,攻击者也会被确认为一个有效的用户。

  这种攻击在 Altoro Mutual 网络应用程序进行了演示(参见图 4)。切换至登录页面,并输入 anything' OR 1=1 -- 的用户名以及任意的字符作为密码,就可以作为管理员登录了(图 5)。该账户有控制其他用户账户的权限。

  图 4. 尝试用任意的一个用户名以及一段 SQL 代码作为密码进行登录


  图 5. 执行 SQL 注入攻击之后攻击者作为管理员登录


  就像跨网站脚本一样,这种攻击是糟糕的或者根本不存在的输入检验和确认系统造成的结果。

  反制措施

  您可以执行以下操作以防御这种攻击:

  不信任来自用户的所有输入。

  采取措施来检验用户的输入,例如筛选或者白板列表。

  在 Altoro Mutual 案例中,一个可能的解决方案是筛选来自 Username 与 Password 区域的非字母数字字符。

  如果您想要得到更多关于 SQL 注入以及可能反制措施的信息,您可以阅读 OWASP 培训页面以了解 SQL 注入(参见 参考资料)。

  信息泄露

  一个有意志的攻击者可以通过识别缺点来研究一项应用程序。例如,一个攻击者可以按照不同的方式来获取信息:

  手动研究应用程序以做到隐藏的目录

  系统性地收集例外情况,以查看应用程序是否给出了详细的例外情况

  扫描 HTML 以得到揭示应用程序基础及行为具体内容的注释

  系统性地输入用户名以找出已存在的账户

  Altoro Mutual 应用程序会在系统之中泄露已存在的用户名。例如,在图 6 中,输入一个不正确的用户名和密码会产生这种出错信息:“登录失败:抱歉,在我们的系统中找不到该用户名。请重新尝试。”

图 6. 应用程序清晰地声明系统中没有做到该用户


  接下来,入侵者会尝试用户名 jsmith,而 Altoro Mutual 网络应用程序会收到以下的信息:“登录失败:您输入的密码无效,请确认后重新输入密码”。于是,入侵者从以上信息上了解到有一个用户账户名为 jsmith。在此基础之上,入侵者可以把注意力放到破解密码上面,或者使用暴力破解方法来发现密码。

图 7. Altoro Mutual 应用程序泄漏了用户名 jsmith 的存在


  在这种情况之下,修复方法可以是产生一种通用的登录信息,不会精确地指出什么地方没有输对,例如:“登录失败:用户名或者密码无效。请确认后重新输入您的信息”。

  反制措施

  对于应用程序来说,信息泄漏需要受到人们的重视,开发人员的意识是最好的防御手段。记住这一点,开发人员可以考虑一些减轻问题的措施。

  所有评论的清晰 HTML 代码会揭示应用程序的实际情况。

  不要在浏览器中显示特定的例外。如果必须登录,将它们存储在服务器上,并显示常见的错误。

  不要揭示哪一部分的认证错误。

  同样,配置网络服务器和应用程序服务器设置,以避免在网站和应用程序上任意的导航。

  这种类型的信息泄漏不会再耗费您的精力了。查找特定应用程序和运行环境存在的其他泄漏问题。

  您可以在 OWASP 培训页面上找到关于信息泄漏的更多信息。

  参数干扰

  这些类型的攻击旨在控制传递给应用程序的参数。想象一下一段糟糕的应用程序让客户来设置要购买商品的价格。这一应用程序可以发送以下的请求:

  http://somedomain/myStore?item=1234&price=$200

  如果业务逻辑并不会在服务器端执行任何类型的双重-检查的话,那么入侵者可以更改价格,以更低的价格买到商品。在这种情况下,允许从客户端更改价格显然是一个 bug。

  反制措施

  为了解决这一特定示例中的问题,您可以更改代码以从服务器的数据库端获得价格的信息,避免价格控制问题的产生。

  避免这种类型攻击的反制措施包括:参数确认,以及对应用程序逻辑进行仔细检查。

  如果您想要得到关于参数干扰和可能反制措施的更多信息,那么您可以在网络参数干扰上阅读 OWASP 培训页面(参见 参考资料)。

  cookie 破坏

  所谓的 cookie(缓存)就是服务器向客户端发送的信息,作为关键字/值对存储在一个文本文件或者内存之中。它的内容可以被创建该内容的网络应用程序使用。在执行一次网络应用程序之后编辑缓存的内容,缓存 破坏 攻击就发生了。

  反制措施

  cookie 破坏的反制措施包括参数认证,以及应用程序代码和逻辑的仔细检查。

  高级安全性机制也可以得到应用。

  一种常见的方法是使用数字签名,来确认文本文件存储没有受到篡改。

  另一种反制措施是在传递期间将其加密,以保护缓存。

  对于未确认的输入问题,cookie 破坏将会在 OWASP 页面上进行讨论(参见 参考资料)。

  将安全性集成到开发过程之中

  安全成为网络应用程序开发的一个重要组成部分,也是移动网络应用程序的组成部分。许多公司机构非常注重软件交付。但是,在交付阶段修复一项缺陷的成本是非常高的。因此,将安全性评审和测试作为开发过程必要的一部分,是非常明智的。

  在整个开发过程中,从设计到部署,集成式地考虑安全性问题是最有效的。

  设计阶段

  在设计阶段,需要识别什么信息需要保护,存在什么风险,是否可以采取什么反制措施。在早期阶段所有可能的地方,将来自公司内部的安全专家加入到所有讨论和决策过程当中。这降低了开发周期晚期阶段才发现错误的可能性。晚期阶段才发现问题会导致问题解决起来更加困难和代价高昂。在设计阶段识别实践性的场景以便测试。这有助于为开发周期的测试建立一个集成化的进程。部署过程中不断增加的安全性测试(例如压力测试)可以帮助一家公司优化需要的技术,以确保品质优良的应用程序的开发。

  开发阶段

  培训开发人员去熟悉一些常见的问题以及安全性代码实践。在代码评审过程之中,处理安全性问题,包括机构的安全领域问题。实施安全测试,评审它们,并将它们加入到自动化测试套件内。开发团队应该计划一下处理代码评审和测试期间找到的安全性问题。

  部署阶段

  在预生产阶段完全地测试完成后的应用程序。这阶段的测试可能包含外部团队或者自动化安全扫描工具执行的应用程序压力测试。IT 治理实践通常会指定最终批准的标准。

  管理阶段

  部署之后,您可以使用扫描工具,压力测试,以及审计日志,来阶段性地监视应用程序及其环境,预防可能的攻击和问题。建立一个清晰的进程,以安全性地修改应用环境,并给应用程序打补丁。

  在开发阶段实行安全测试的自动化

  当您在建立一个最佳实践时,开发周期内创建一个可重复和稳定的安全性进程的关键在于自动化。IBM Rational AppScan 产品提供的工具,可以扫描代码,以帮助开发人员找到问题所在。在开发的后期可以重复使用自动化扫描工具,以监视部署的应用程序。在应用程序或者基础设施更改时,这将使得部署的网络应用程序得到较好的监视,并帮助您检查不经意间引入的安全性问题。

  Rational AppScan 家族的产品在开发与部署阶段提供了这些活动的自动化功能。

  开发阶段

  Rational AppScan Source Edition: 对于应用程序开发人员来说,该工具提供了代码的白盒分析功能,这样开发人员就可以在开发的早期阶段就识别到存在的问题。它还向开发人员提供了关于可能找到问题及其补救措施的信息。

  Rational AppScan Tester Edition: 对于质量保证(QA)团队来说,该工具有助于实现安全测试的集成化和自动化。测试员可以将其添加到已存在的测试环境,以将安全性测试集成到功能性测试以及性能测试。

  Rational AppScan Build Edition: 该版本支持在构建期间安全性问题扫描的集成。它与构建管理系统集成在一起,例如 Rational Build Forge,并且可以通过缺陷管理软件来追踪开发人员的报告,例如 Rational Clear Quest。

  部署阶段

  Rational AppScan Standard Edition: 对于安全审计员来说,该版本执行部署应用程序的黑框检查。审计员可以指定已存在应用程序的 URL(一般是在一个预生产系统上),而工具会扫描应用程序以检查问题。接着会创建一个优先级问题的列表,以及关于每一个处理措施的详细信息。开发与管理团队定制报告的创建也是支持的。

  Rational AppScan Enterprise Edition: 对于团队来说这是一种基于网络的多用户工具,它们需要以一种集中的方式处理应用程序扫描问题。就像 Rational AppScan Standard Edition 一样,它会扫描已存在的应用程序,并生成优先性列表和修复任务的报告。它有助于分配任务,以解决问题。

  查看 参考资料 以得到关于 Rational AppScan 家族产品的更多信息,以及 IBM Red guide 关于 Rational AppScan 家族产品的指南的链接,帮助您实现开发过程的自动化和集成性安全。

  从移动设备访问网络应用程序的独特性挑战

  应用程序和设备的许多风险,增加了当前桌面应用程序的问题。识别和访问控制的当前操作超出了本文的讨论范围,但是网络应用程序治理涉及到的标准领域包括:

  扫描应用程序上已存在的问题

  访问控制

  用户识别与认证

  末端识别与管理

  Malware

  阅读 参考资料 所列出的 IBM Redbooks 文章,以学习更多关于 IBM 家族产品的信息,以集成安全性 。同样,您还可以从 IBM Web Application Security Solutions 网站上找到关于 IBM Tivoli 家族产品的更多信息。

  移动设备由于其高度的定制性和移动性本质,呈现出较大的挑战性。移动设备更容易丢失。智能手机滑出口袋或丢失在出租车和飞机上,现在成为越来越常见的情形。智能手机也容易成为盗贼的盗取目标。出于这些原因考虑,移动设备能够访问的网络应用程序必须采用额外的安全性措施。

  部署移动设备时公司治理处理的其他领域包括:

  多因素认证:合并两种认证方法,例如,如果有条件的话,可以使用密码和指纹读取设备。

  设计精细的访问控制机制:用户应该被授予权限获得需要的资源,去完成自己的工作,或者更多。所有的访问控制机制都应该尽可能地完美。

  限制访问:支持从 Virtual Private Networks(VPN)的因特网上访问内部网资源。

  数据加密:对于敏感性数据,匹配设备功能与需求。

  管理:如果能够访问敏感性信息的话,那么对于丢失或者被盗设备来说,建议使用设备的 安全抹除功能。

  总结

  桌面和移动设备的 Web 2.0 应用程序有一些共享的安全性问题,因此,也有相应的反制措施。开发人员必须对一些常见的问题有较好的认识,并学会在整个开发的生命周期内处理它们。开发和部署期间他们需要持续性的自动化搜索功能,来保证应用程序的安全性。移动设备由于其高度的定制性和移动性本质,呈现出独特性的挑战。在您部署移动性方案之前,您需要计划一下如果设备被盗或者丢失的话,数据的安全性问题

时间: 2024-11-01 19:42:47

Web 2.0桌面与移动应用程序安全性设计的相关文章

Web 2.0用户界面技术详解

假设您需要创建一个适合 Web 2.0 环境的新应用程序.一部分用户非常喜欢基于 HTML 的用户界面,而其他用户希望他们使用的每个应用程序都表现得像 Excel 那样的桌面应用程序.您的老板要求有工作效率高的用户体验,但是 CIO 不允许开发需要用户手工部署的任何东西.您知道 HTML 无法达到这样的目标,但是怎么做才能符合要求呢?本文要讨论一系列 Web 2.0 用户界面技术,让您构建的应用程序具有比浏览器更好的用户体验. 在用户界面方面,当今的企业应用程序开发人员受到来自用户和运营部门的双

提高基于Dojo的Web 2.0应用程序的性能

Web 2.0 应用程序最注重的一个方面就是用户体验,用户希望使用的是一个快速稳定的 Web 2.0 应用.而基于 Dojo 的 Web 2.0 应用经常需要下载大量 Dojo 代码到客户端执行,而且会不时的向后台发起 IO 请求,响应速度受到很大影响.本文通过演示一些实用的技巧来提高 Dojo 的性能,帮助开发人员找出 Web 2.0 应用程序的性能瓶颈. Web 2.0 与 Dojo 介绍 Web 2.0 应用以其丰富的用户体验,快捷的响应速度越来越受到众多用户的欢迎.Google Map,

用Dojo Objective Harness对Web 2.0应用程序进行单元测试

单元测试是保证软件开发质量的一个重要部分,对于敏捷和极限编程开发方法尤其如此.通常,对 Web 2.0 客户端用户界面进行自动的单元测试很困难,所以很少有人去做尝试.然而,Dojo 提供了一个单元测试工具,借此可以评估 JavaScript 的功能及用户界面的可视性.经过这个工具彻底测试过的用户界面最终包含的 Bug 数量会极大的减少.本文阐述了 Dojo Objective Harness (DOH) 的主要特点并通过与其它 Web 2.0 应用程序测试工具的比较展示了其强大的功能. 单元测试

测试Web 2.0程序所带来的挑战

使用 GUI 恢复性能评测来补充 Web 2.0 性能测试 学习怎样使用已存在的工具,来更好地测试对于 Web 2.0 的末端用户经验,从而帮助您的公司解决测 试中存在的挑战并提高程序的质量.使用为测试服务专门定制的测试工具,您就能优化使用 Web 2.0 技 术,建立浏览器更好的业务逻辑结构. Web 2.0 测试中存在的挑战 Web 2.0 是一种新的很实用的技术,用于构建 Internet 的多客户程序.具体来说取决于谁来描述它 ,在需求动态内容或者一系列其他事情上它可以是社交网络的,ma

网络生活新体验:WEB 2.0个人桌面

随着宽带的普及,生活越来越多地融入了网络的元素,打开浏览器上网已成为许多朋友生活中不可或缺的内容. 那么如何才能尽量 丰富自己的http://www.aliyun.com/zixun/aggregation/18418.html">网络生活呢?Google推出的"个性化主页"服务已经让大家领略了网络资源聚合的便利性,而如今"爱笛网"推出的"WEB 2.0个人桌面"服务则更是将这种理念发扬光大,它支持多页面和本地化操作,可自定义的内

热门技术探讨:学习Web 2.0的方向盘

web 历史很重要.对一个技术的学习也应当从历史出发,通过其在时间形成历史的流变,得以知晓现状,甚至能够预知未来. 那Web 1.0是什么呢? 他们说,记得静态HTML的WWW时代么? (那个时代的WWW应用.人们的Web体验.对社会的影响如何?) 那么动态HTML和静态HTML下的Web相比,是多少版本?1.5?对了,他们是真这么叫的. (在效果和影响上,与1.0相比,扩展和加深多少?) 要呈现的数据存储在数据库中,通过Web服务端的程序,应用户的请求,取出数据,加上事先设计的模板,动态的生成

Web 2.0,这十大要领您知道不

Web 2.0就像是一只难以驯服的野兽.就像大多数强大的工具和技术一样,Web 2.0都是取决于你所做的事.那些干劲十足的人?企业通过新的通讯.协作以及接收舆论方式,在向2.0的疆界不断挺进.那么乐衷于社交的人呢?社会网络将著名的"六度分离理论"进行了调整--变成了至少需要四度.甚至是你想要在网络中浪费时间时,新的技术也能够精确地向你交付你想要冲浪的内容,帮助你以更高的质量来浪费时间. 1.它是渐进的,不是革命性的 你也许从事这方面已经有很多年了.如果Web 2.0的各个环节听起来就像

超越浏览器:从 web 应用到桌面应用

本文讲的是超越浏览器:从 web 应用到桌面应用, 一开始我是个 web 开发者,现在我是个全栈开发者,但从未想过在桌面上有所作为.我热爱 web 技术,热爱这个无私的社区,热爱它对于开源的友好,尝试挑战极限.我热爱探索好看的网站和强大的应用.当我被指派做桌面应用任务的时候,我非常忧虑和害怕,因为那看起来很难,或者至少不一样. 这并不吸引人,对吧?你需要学一门新的语言,甚至三门?想象一下过时的工作流,古旧的工具,没有任何你喜欢的有关 web 的一切.你的职业发展会被怎样影响呢? 别慌,深呼吸,现

AJAX 弄潮Web 2.0 在线Office项目复活

ajax|web|项目|在线 AJAX等时髦的开发技术正在刺激着消费者Web应用软件的增长.这些新的技术甚至在使一些一度被认为是不可能的项目"复活":在线版的Office. 以Google Maps为代表的一些Web服务的推出使得AJAX技术名扬天下.目前,有数十家初创厂商在利用它开发包括从字处理软件到项目管理软件在内的桌面软件的在线版本.但是,它们并非简单地在互联网上复制Office,有时被称为Web 2.0的许多这些Web应用软件的重点是通过网络发布和共享信息. 基本的AJAX技术