Web开发中需要了解的东西

jopen 10年前

Web开发中需要了解的东西,作为一个web开发人员,还是有些东西需要大家去了解的。

Web开发中需要了解的东西

接口和用户体验

1.首先,需要确保你的网站能够兼容绝大部分的浏览器,最好能够兼容下面的浏览器

  • 最新的Gecko引擎(Firefox)

  • 最新的webkit引擎(chrome浏览器)

  • IE浏览器(测试兼容性的时候可以使用微软IE的 Application Compatibility VPC Images

  • opera浏览器

2.多考虑考虑人们是怎么来访问你的网站的而不是那些主流的浏览器,手机,读屏软件(ipad),搜索引擎

3.部署Staging:怎么部署网站的更新而不会影响用户的访问(版本控制,自动化build,备份,回滚)

4.千万不要直接给用户显示不友好的错误信息

5.千万不要把用户的邮件 地址以明文显示出来,这样会被爬虫并让用户的邮箱被垃圾邮件搞死。

6.为用户的链接添加上rel = "nofollow"的属性以避免垃圾网站的干扰,

ps: nofollow是html的属性,用于通知搜索引擎:这个连接所指向的网页非我能控制的,对其内容不予置评。

或者简单的说,该链接不是对目标网站或者网页的访问,这样搜索引擎就不会再访问这个链接了。

7.为网站建立一些限制,这个属于安全性的范畴了(例如 短信认证,限制次数,captcha)

8.学习如何做 Progressive Enhancement 

PS:包含的内容:1.基础的内容和功能应该可以被所有的浏览器存取,2.页面布局的应该使用外链的css链接

3.javascript 也应该是外部链接,还应该是unobtrusive的,4.应该让用户设置他们的偏好

9.如果POST成功,要在POST方法后重定向网站,这样可以阻止用户通过刷新页面重复提交。

10.关注Accessibility

安全

1.关注安全,OWASP(open web application security project)

2.了解什么是SQL注入攻击,并知道如何阻止这种攻击

3.永远不要相信用户的输入(包括cookies,因为这也是用户输入的)

4.对用户的口令进行hash,并使用salt,以防止rainbow攻击

ps:Hash算法可以使用MD5或者SHA1等,

对口令使用salt:在用户设定密码的时候,system会产生另外一个random string (salt).在database存储的时候是

salt+passworld产生的MD5sum以及salt,当要验证密码的时候就把user输入的string加上使用者的salt,产生md5sum来比较,理论上面用salt可以大幅度的让密码难以破解,相同的密码除非刚好salt相同,最后存储在database上的内容也是不一样的。

关于彩虹表攻击,意思就像密码字典表,但不同的是,rainbow表存的是已经被hash过的密码,而且其查找密码的速度更加的快速,这样可以更快的攻击了。

使用慢一点的hash算法来保存口令,例如bcrypt或者scrypt,

5.不要试图自己去发明或者创造一个自己的fancy的认证系统。

6.了解处理信用卡的一些规则。

7.使用SSL/HTTPS 来加密传输登录页面或者是任何可能有敏感信息的页面。

8.知道如何对付session劫持

9.避免跨脚本攻击(XSS)

10避免跨站伪造请求攻击(cross site request forgeries)(XSRF)

11 保持你的系统里面的所有软件更新到最新的patch

12. 保证你的数据库连接是安全的

13.确保你能了解最新的攻击技术,以及你的系统的脆弱性。

性能

  1. 只要需要,请实现cache机制,了解并合理使用 HTTP caching 以及 HTML5 Manifest

  2. 页面优化-千万不要使用20kb的图片平铺网页背景。

  3. 学习如何gzip/deflate 网页 (deflate 更好)

  4. 把多个css文件和javascript文件合并成为一个,这样可以减少浏览器的网络连接个数,并使用gzip压缩反复被使用到的文件

  5. 学习一下 Yahoo Exceptional Performance 这个网站上面的东西

  6. 为那些小的图片使用 css image sprites (最小化HTTP请求)

  7. 繁忙的网络应该考虑把网页的内容分开存放在不同的域名下面(使用专门的图片服务器,或者专门的ajax服务器)

  8. 静态页面应该放在一个不使用cookies的独立域名下面,因为所有在同一个域名或者子域名下面的cookies会被这个域名下面的请求一同发送,另外一个好的选择方法就是 content delivery network 

  9. 使用单个页面的合同谈判请求数最小化

  10. 为javascript使用 google closure compiler 或者其他压缩工具

  11. 确认一下你的网站的 favicon.ico 文件放在网站的根下,如./favicon.ico,浏览器会自动的请求这个文件。就算这个图标文件没有在你的网页中明显说明,浏览器也会请求的,如果你没有这个文件,就会发生大量的404错误,这样会造消耗你的服务器带宽。

SEO(搜索引擎优化)

  1. 使用搜索引擎最喜欢的url (例如 example.com/pages/44-article-title而不是  example.com/index.php?page=45

  2. 如果你的动态页面需要使用到 # , 那么请换成 #! , 而在服务器端你需要处理¥

  3. 别使用“click here”这样的链接,这样一来无法SEO,而且对于一些需要使用读屏的人来说很不友好,

  4. 做一个 XML sitemap ,并放在网站的跟下 /sitemap.xml ,这样可以让搜索引擎更好的了解网站图

  5. 当你有个多个URL指向同一个url的时候,使用 <link rel = "canonical" .../> 

  6. 使用google webmaster tools 和 yahoo site explorer 

  7. 安装google analytics 

  8. 了解robots.txt 和搜索引擎爬虫是如何工作的。

  9. 重定向请求,使用(301重定向网站),如果你要把www.example.com 定向到 example.com 或者是其他的变更,这样可以防止google的rank因为域名的改变而发生改变。

  10. 知道并不是所有的爬虫都是好的,也有些爬虫的行为并不好,比如向你的网站发起大量请求会造成服务器的性能下降。

技术

  1. 了解什么是HTTP 比如: GET, POST, sessions,cookies 了解什么是 statusless 无状态

  2. 让你的XHTML/HTML 和 css 复合W3C规范,并确认他们都是合格的,我们的目标是避免浏览器的 quirks mode,并且可以让其更容易地能和非标准的浏览器工作,比如读屏器移动设备。

  3. 了解浏览器是怎么处理javascript的,最好能够了解为什么有些js代码是在页面前面,有些则是在页面后面的

  4. 了解浏览器是怎么装载javascript,css和其他资源的,了解其对视觉上的影响。

  5. 了解javascript的sandbox是怎么工作的,尤其当你想使用iframes的时候。

  6. 注意javascript是可以被禁止掉的,这样会让你的ajax失效掉。

  7. 学习301 和 302 转向的区别。

  8. 尽可能多的学习你的部署平台,比如操作系统,web server ,apache/nginx 防火墙,数据库,等等

  9. 考虑使用一个 Reset style sheet 

  10. 考虑下使用javascript框架

  11. 把视觉设计和js框架组合起来考虑,考虑使用一个service,比如Google libraries api 来转载框架,这样就可以让浏览器可能早的把这些缓存起来,而不是从你的网站上下载。

Bug fixing

  1. 要明白你会花20%的时间写代码,而80%的时间维护,所以小心你的编码

  2. 设计一个好的错误报告机制

  3. 设计一个入口可以让人们联系到你并给你建议和批评

  4. 为你开发出来的系统形成文档,这样可以让后来的人容易维护你的软件和系统。

  5. 频繁备份

  6. 使用一个版本控制系统来保存你的代码 例如 svn 或者 git

  7. 确保足够的日志,方便你快速的定位问题

  8. 当你写日志的时候,确保你记录的日志捕获了你的处理和处理异常,报告和分析日志可以让知道你的网站的问题。

原文地址:http://coolshell.cn/articles/6043.html