恒泰博远,专家级研发软件定制开发公司,为企业定制营销、办公、管理软件 在线咨询 :
咨询电话:010-82969001

哪些技术细节应该使网站在公众面前的Web应用程序的程序员考虑?

来源:http://www.hengtaiboyuan.com 作者:恒泰博远 时间:2014-05-21

[摘要]什么事情应该使网站在公众面前程序员实现一个Web应用程序的技术细节考虑?如果杰夫·阿特伍德可以忘记HttpOnly的cookie ,站点地图,和跨站点请求伪造都在同一个网站,有什么重要的东西可能我会忘记呢?

什么事情应该使网站在公众面前程序员实现一个Web应用程序的技术细节考虑?如果杰夫·阿特伍德可以忘记HttpOnly的cookie ,站点地图,和跨站点请求伪造都在同一个网站,有什么重要的东西可能我会忘记呢?

我正想着这从一个web开发人员的角度,这样,别人是创建实际的设计和内容的站点。因此,虽然可用性和内容可能比平台更重要,则程序员没有发言权在于。你做什么需要担心的是,你实现了平台的稳定,性能良好,是安全的,并符合其他任何商业目标(如没有花费太多,需要很长时间才能建立,并与谷歌的排名,以及在内容支持) 。

想到这从谁的做了一些工作在一个相当可信的环境内联网型应用程序开发人员的角度来看,并即将拥有自己的第一张照片,并把出一种潜在的流行网站对于整个大坏万维网。

另外,我在找的东西不仅仅是一个模糊的“ web标准”的回应更具体。我的意思是, HTML , JavaScript和CSS通过HTTP是相当多一个给定的,尤其是当我已经指定了你是一个专业的Web开发人员。那么回事除此之外,哪些标准?在什么情况下,为什么?提供一个链接到标准的规范。
  
此锁是最适用于具有单一连续的答案,涵盖所有点的问题。在那个并不适用于这个问题,因此,如果人们可以采取其他的(删除)答案之一,并编辑成公认的答案,这将是巨大的时刻。 - ChrisF ♦ 6月21日'13 19:34
关于删除/锁定帖子关闭评论
在19:48锁定雅尼斯Rizos ♦ 6月21日'13

这个问题的答案是一个合作努力:如果你看到一些可以改善的,只需编辑来改善它!没有额外的答案都可以在这里添加

这里的想法是,我们大多数人应该已经知道大部分内容是这个名单上。但是,只可能是一个或两个项目还没有真正看过之前,不完全了解,或者甚至从来没有听说过。

界面和用户体验

请注意,浏览器实现标准不一致,并确保您的网站能够合理地发挥在所有主要浏览器。在对最近的Gecko引擎(火狐)的最小试验, WebKit引擎( Safari和一些手机浏览器) , Chrome浏览器,你的IE浏览器支持浏览器(利用应用程序兼容性VPC图像) ,和Opera 。还要考虑浏览器如何呈现在不同的操作系统上您的网站。
考虑人们如何可能使用该网站不是从主流浏览器其他:手机,屏幕阅读器和搜索引擎,例如。 - 一些辅助信息: WAI和Section508 ,移动开发: MobiForge 。
分期:如何在不影响用户部署更新。有一个或多个可用来实现更改架构,代码或笼统的内容,并确保它们可以部署在一个可控制的方式不破坏任何测试或试运行环境。有那么部署核准的变更对活动网站以自动化的方式。这与使用版本控制系统( CVS , Subversion的等)和自动化的构建机制(蚂蚁,南特等)相结合最有效的执行。
不要直接给用户显示不友好的错误。
不要把用户的电子邮件地址以纯文本格式,因为他们将得到太多垃圾邮件死亡。
新增属性为rel = “ nofollow的”用户生成的链接,以避免垃圾邮件。
建立深思熟虑限制到你的网站 - 这也属于安全性下。
学习如何做渐进增强。
一个POST重定向后,如果POST成功,防止刷新再次提交。
不要忘记带辅助功能考虑在内。它总是一个好主意,在某些情况下这是一个法律要求。 WAI-ARIA和WCAG 2个在这方面的良好资源。
不要让我觉得
安全

这是一个很大的消化,但OWASP开发指南涵盖了网站的安全性上下。
了解注射剂特别是SQL注入,以及如何防止它。
永远不要相信用户的输入,也不是来自于请求别的(包括cookie和隐藏的表单字段值! ) 。
使用盐哈希密码,并使用不同的盐你行,以防止彩虹攻击。使用慢速散列算法,如从BCrypt (测试时间)或scrypt (甚至更强,但新) ( 1 , 2 ) ,用于存储密码。 (如何安全地存储密码) 。 NIST的还批准PBKDF2的哈希密码“ ,它的FIPS认可。NET中(这里的详细信息) 。避免直接使用MD5或SHA家庭。
不要试图拿出自己看中的身份验证系统。它是这么简单的东西来获得错误的微妙和不可测试的方式,你甚至不知道它你砍死之后。
了解处理信用卡的规则。 (看到这个问题为好)
用于登录和敏感的数据输入(如信用卡信息)的任何页面使用SSL / HTTPS 。
防止会话劫持。
避免跨站点脚本(XSS ) 。
避免跨站请求伪造( CSRF) 。
避免点击劫持。
让您的系统( S)最新的最新的补丁。
确保你的数据库连接信息是安全的。
保持自己的最新攻击技术和漏洞影响到你的平台。
阅读谷歌浏览器安全手册。
阅读Web应用程序黑客手册。
考虑最小权限的负责人。尝试运行你的应用服务器作为非root 。 ( tomcat的例子)
性能

如果需要实现缓存,理解和使用HTTP缓存正确,以及HTML5的清单。
优化图像 - 不使用20 KB图像可重复的背景。
了解如何用gzip /放气含量(放气为佳) 。
合并/连接多个样式表或多个脚本文件,以减少浏览器连接的数量,提高gzip来压缩文件之间的重复能力。
来看看雅虎卓越的性能工地,很多伟大的指导方针,包括改善前端性能和YSlow的工具(需要火狐,Safari , Chrome浏览器或Opera ) 。此外,谷歌网页速度(与浏览器扩展使用)是另一种工具,性能分析,并将其优化你的图片了。
使用CSS图片精灵的小相关相似图片工具栏(参见“最小化HTTP请求”点)
繁忙的Web站点应该考虑跨域分裂组件。具体...
静态内容(如图片,CSS ,JavaScript和一般内容,并不需要访问的Cookie)应该在不使用Cookie一个单独的域,因为所有的cookie的域及其子域发送的每个请求的域及其子域。这里是一个很好的选择是使用一个内容交付网络(CDN ) 。
最大限度地减少所需的浏览器来呈现页面的HTTP请求的总数。
利用谷歌关闭编译器对JavaScript和其他微小的工具。
确保有在现场,即/ favicon.ico的根目录的favicon.ico的文件。浏览器会自动请求它,即使该图标是不是在HTML只字不提。如果你没有一个/的favicon.ico ,这将导致大量的404 ,消耗你的服务器的带宽。
SEO(搜索引擎优化)

使用“搜索引擎友好”的URL ,即example.com/pages/45-article-title使用,而不是example.com /的index.php ?页= 45
当使用#动态内容更改#到# !然后在服务器$ _REQUEST [ “ _escaped_fragment_ ”]是什么Googlebot使用,而不是# !换句话说, #!页= 1 /变成/? _escaped_fragments_ =页= 1。此外,对于可能使用FF.b4或铬, history.pushState用户( {“ foo”的: “酒吧” } “ 。 ? /页= 1 ” , “关于” , ) ;是一个伟大的命令。因此,即使在地址栏改变了页面不会重新加载。这使您可以使用?而不是# !保持动态内容,并告诉服务器当您发送电子邮件,我们是这个页面后的链接,以及AJAX并不需要再作额外的要求。
请勿使用说“点击这里”链接。你在浪费一个SEO机会,它使事情更难的人与屏幕阅读器。
有一个XML站点地图,最好是在默认位置/ sitemap.xml的。
使用<link rel="canonical" ... />当你有两个指向不同的地址,这个问题也可以从谷歌网站管理员工具解决。
使用谷歌网站管理员工具和Bing网站管理员工具。
在一开始(或一个开源分析工具一样的Piwik )安装谷歌Analytics(分析) 。
懂得robots.txt和搜索引擎蜘蛛的工作。
重定向请求(使用301永久移动)要求www.example.com到example.com (或者反过来),以防止分裂谷歌两个网站之间的排名。
要知道,有可能是严重乖蜘蛛在那里。
如果您有非文本内容的外观到谷歌的地图扩展视频等有一个添法利的回答关于这方面的一些好的信息。
技术

了解HTTP之类的东西GET,POST ,会话,cookie和它的意思是&ldquo;无状态&rdquo; 。
根据W3C规范写你的XHTML / HTML和CSS ,并确保他们验证。这里的目标是避免浏览器的怪癖模式和奖金使得它更容易使用非标准的浏览器,如屏幕读取器和移动设备的正常工作。
了解JavaScript在浏览器中进行处理。
了解JavaScript中,样式表,并使用你的页面其他资源加载,并考虑其对感知性能的影响。现在人们普遍认为是适当的移动脚本到您的网页中有例外是典型的事情,比如分析应用程序或HTML5的垫片的底部。
了解如何在JavaScript的沙箱的工作原理,特别是如果你打算使用iframe 。
注意, JavaScript可以和将被禁用,并且因此AJAX是一个扩展,而不是一个基线。即使大多数普通用户离开它了,记住, NoScript的是越来越受欢迎,如预期的移动设备可能无法正常工作,并编制索引的网站时,谷歌将无法运行大部分的的JavaScript 。
学习301和302重定向的区别(这也是一个SEO的问题) 。
尽可能多地学习你所能了解你的部署平台。
请考虑使用复位样式表或normalize.css 。
考虑JavaScript框架(如jQuery , MooTools的,原型,道场或YUI 3 ) ,这将使用JavaScript进行DOM操作时,隐藏了很多的浏览器差异。
以感知性能和JS框架一起,可以考虑使用一个服务,如谷歌库API来加载框架,使浏览器可以使用它已经缓存,而不是从你的网站下载一个副本的框架副本。
不要重新发明轮子。做任何事情之前搜索关于如何做到这一点的组件或例子。有99%的机会已经有人做到了,发布了一个开源版本的代码。
更重要的是不利的一面,不要用20的库开始之前,你甚至决定你的需求是什么。特别是在客户端Web地方几乎总是最终更重要的是让事情变得轻便,快速和灵活。
bug修复

明白你会花你的时间编码的20 %和80 %维持它的,所以相应的代码。
建立一个良好的错误报告解决方案。
有市民给您的建议和批评,请联系系统。
记录了应用程序如何适用于未来的支持人员和进行维护的人。
频繁的备份! (并且确保这些备份是功能性)埃德&middot;卢卡斯的回答有一些忠告。有一个恢复策略,而不只是一个备份策略。
使用版本控制系统来存储你的文件,比如Subversion ,水银或Git的。
不要忘记做你的验收测试。像硒的框架可以提供帮助。
请确保您有足够的日志来代替使用框架(如log4j) , log4net的或log4r 。如果有错误发生在你的网站中,你需要找出什么的方式。
当登录时请务必同时捕获处理异常和未处理的异常。报告/分析日志的输出,因为它会告诉你其中的关键问题是在您的网站。
很多东西省略不一定是因为他们不是有用的答案,而是因为他们要么过于详细,超出范围,或者走得有点太远的人希望得到的东西,他们应该知道的概述。请随意编辑这一点,我可能错过了一些东西,犯了一些错误。

一些搜索引擎优化建议是坏的。如果你使用表格或div的(谷歌证实了这一点本身)也没关系。这海基会网址的事情......我讨厌那些&ldquo;假网址&rdquo; ,其中ID是实际决定了页面的唯一的事。 &ldquo; 45嗒嗒&rdquo;将是相同的页面。这不是用户友好要么。 - DisgruntledGoat 3月6日09时0:29
92
然后对其进行编辑。不是我写的大多数这样的:我只维护它 - 我已经继承了,因为我问的问题工作,特别是征求这个更大的答案,我在看什么,我们可以拿出真正有兴趣。供款越多就越好。 - 乔尔库霍恩3月16日09时1:18
241
还要说明一点:如果你回来编辑这个,尽量尊重写着什么。不要只是删除您不同意部分:实际花时间去解决的不足之处,并提供更好的东西。 - 乔尔库霍恩3月16日09时1:19
9
有一件事我建议你添加到您的安全部分,就是你服务的所有文件应比白名单允许的文件夹,还是要&ldquo;坐牢&rdquo;的网络服务器。这将阻止有人利用http://server/download.php?file=../../etc/password 。切勿将文件路径给用户。 - Philluminati 2月12日'11 13:24
7
作为一个例子,你不只是跳进了一辆汽车,开始驾驶。相反,你拿上车的正确操作类和最终还是要通过测试证明你可以驾驶。一些人认为,这需要许多,许多,许多小时的学习。是的,我会画上等号学习如何正确地构建Web应用程序有学习驾驶汽车故障进行正确构建应用程序当然可以导致更大程度的民族破坏生活不是一个简单的车祸,其中包括一个更大的财务损失。死亡?还有,要看是什么类型的应用程序开发人员搞砸了。