快速业务通道

用Rails创建高质量Web应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
自己的实现或者设计问题。比如对于Active Record Query Interface的的滥用,多数时候性能问题都可以通过完善数据库查询来得到很大的改进。对于数据库查询,我们应该经常关注几个问题,比如:获取的数据结果集中是否有大量无用数据,数据库查询次数是否可以减少等等。

用户体验

用户体验是Web应用非常重要的元素,Rails作为Web开发的DSL在这方面也有很多关注。 在Web应用中我们经常遇到的一个问题是:submit button(提交按钮)被多次点击。如果没有被恰当处理,就会引起表单的多次提交。用Rails的form helper方法可以很简单地避免这个问题:

submit_tag "Submit", :disable_with => "Submitting..." 

代码中的:disable_with选项的作用是:在button被点击之后把它disable掉,并且把button的文字替换成“Submitting”。一个简单的选项带来了显而易见的好处:不仅避免了多次点击的问题,而且显式地告诉了用户表单正在被提交当中。

Rails提供了很多便捷的方法,让提升用户体验变得非常容易。作为程序员,我们也应该对用户体验有更多关注,比如如何设计更好的交互来避免AJAX所带来的种种用户体验问题等等。

安全

Web应用面临着很多安全隐患,比如Session定置(Session Fixation)、跨站请求伪造(CSRF)和日志信息泄露(Logging)问题。在Rails中我们可以用简单到只有一行代码的方式来避免这些安全问题。下面是各安全隐患以及对应策略。

Session定置

攻击者通过某种方式强制用户使用他所掌握的Session ID,在用户登录之后攻击者即可使用此Session ID窃取用户的信息。解决方案:

reset_session 

在登录逻辑中添加此段代码,以在登录之前重置session,这样便可以防止攻击者通过Session Fixation攻击来获得用户信息。

跨站请求伪造

CSRF是指在页面中注入一些恶意代码或者链接──指向用户使用的其它站点,比如站点A。当用户访问被污染的页面时,如果刚好站点A仍处于有效认证期,则用户在站点A的数据就会被侵犯。解决方案:

protect_from_forgery :secret => "123456789012345678901234567890..."

此代码会在非get请求中添加一个security token,如果token不一致,则请求将失败。这种方式可以有效防止CSRF,当然前提是我们正确地使用了HTTP method。

用Rails创建高质量Web应用(4)

时间:2011-07-06 infoq 胡振波

日志信息泄露

默认情况下,Rails会把所有的请求信息都记录在日志文件中。那么攻击者就可以通过窃取日志文件,以得到一些秘密信息,比如登录密码、信用卡信息等等。解决方案:

filter_parameter_logging :password

这行代码就可以过滤那些不希望被日志文件记录的信息,比如password等,从而避免通过日志来泄露敏感信息。

Web应用还面临着很多其它安全问题,比如SQL注入,XSS等等。我们应该更多关注Web应用所面临的安全问题,并尽可能避免。何况,在Rails中要避免大多数问题,方法都很简单。

业务模型

最后一个问题虽然与Rails甚至技术的关系并不大,但是却关系到一个Web应用质量的最关键问题:创建的Web应用是否符合业务模型。我们曾经在一个电子商务应用的开发过程中遇到这么一个问题:整个购买流程的最后一步是支付页面,用于完成支付并生成收据的PDF文件。产品交付之后,客户开始抱怨支付页面的性能问题:响应时间超过了容忍度。于是我们试图改进支付页面的性能,但因为支付页面涉及的逻辑和业务实在过多,性能提升很困难。

但当我们重新审视支付页面的业务逻辑时,我们发现这个页面其实包含了两部分功能:支付和PDF文件的生成。而从业务角度看,PDF文件的生成不属于支付过程,而是支付完成之后的逻辑。而且,并不是所有的用户都需要生成PDF,强制在

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号