给RSS增加呈现样式(仅作呈现,不含订阅功能)
RSS(Really Simple Syndication) 是标准的 XML 文档,wiki上可以找到它完整的文档,这里不再赘述。RSS大概是 1999 年 3 月被正式提出的,但很少有人关注。 3年后 IE6 发布,并迅速占领了市场,不知何原因,IE6 并不原生支持 RSS(估计是自大成性的MS从未关注过RSS),这也导致 RSS 一直被雪藏,直至 Firefox 的崛起,2005年开始 RSS 才流行开来。面对国内大量的 IE6,如何正常显示 RSS,而不是直接呈现 XML 代码呢?
最有效的方法是使用 XSL 模板。IE5.5+ 后就支持使用 XSL 渲染 XML 数据了(顺便赞一下微软中国团队开发的MSXML组件)。 RSS 本身就是一个标准的 XML 文件,我们只要做一个 XSL 文件,并通过 XML 处理指令链接 XSL 文件,IE6 就会根据 XSL 来呈现 XML 数据。
只需在 RSS 的版本定义 <?xml version="1.0" encoding="utf-8"?> 后增加一行:查看详细»
用 Schema 约束 XML 数据
XML 是严格又自由的标记语言。我们都习惯于它的自由特性,自己想怎么定义都行,设计上非常自由,从不会因为它的标记特性约束到设计灵感的发挥。对于其严格特性,很多人的认识只停留在“标签的开始与结束必须一致,且不能错位嵌套”。本文主要想举例子来体现XML的严格特性。
举个例子,总公司需要收集所有子公司每个月份的销售数据(XML格式),这些子公司有些是收购来的,有些子公司产品具有地域特性与产品特性,这些子公司的销售数据不太一致。总公司为了收集这些数据,制定了一套约束数据的规则(Schema),子公司的数据只要通过有效性约束,就可以存入总公司的数据库。下面穿插一段从百度百科来的关于 Schema 的简介:
通过上述文字,可以看到 Schema 就是为了约束 XML 而设计的,它本身也是使用 XML 实现的(这是它比DTD更优秀的一个重要原因)。总公司通过设计一套严格的数据约束规范,就可以保证最终进入数据库的数据格式完整统一,可以生成有效的财务报表。
查看详细»
举个例子,总公司需要收集所有子公司每个月份的销售数据(XML格式),这些子公司有些是收购来的,有些子公司产品具有地域特性与产品特性,这些子公司的销售数据不太一致。总公司为了收集这些数据,制定了一套约束数据的规则(Schema),子公司的数据只要通过有效性约束,就可以存入总公司的数据库。下面穿插一段从百度百科来的关于 Schema 的简介:
Schema是用于描述和规范XML文档的逻辑结构的一种语言,它最大的作用就是验证XML文件逻辑结构的正确性。可以理解成与DTD(文档类型定义)功能差不多,但是Schema在当前的WEB开发环境下优越很多。因为它本身就是一个有效的XML文档,因而可以更直观地了解XML的结构。除此之外,Schema支持命名空间,内置多种简单和复杂的数据类型,并支持自定义数据类型。由于存在这么多的优点,所以Schema渐渐成为XML应用的统一规范。
通过上述文字,可以看到 Schema 就是为了约束 XML 而设计的,它本身也是使用 XML 实现的(这是它比DTD更优秀的一个重要原因)。总公司通过设计一套严格的数据约束规范,就可以保证最终进入数据库的数据格式完整统一,可以生成有效的财务报表。
查看详细»
使用 WinHttpRequest 伪造 Referer (附实战代码)
首先说明,伪造访问来路不是什么光明正大的事情,目的就是为了欺骗服务器。原本以为给 XMLHTTP 对象增加一个 Referer 的header 就可以,结果却没有任何作用,改用 ServerXMLHTTP 也如此。
无意间发现公司内部项目使用的 paypal 扣款程序里面有 WinHttp.WinHttpRequest.5.1 对象,它负责把客户的信用卡信息提交到 paypal 的服务器,看来是一个核心的远程访问方法,google一下发现它居然用可以成功伪造所有 http 请求的 header 信息!下面的代码通过伪造 referer 的值,假装从百度首页提交一个表单到指定的 url 去:
无意间发现公司内部项目使用的 paypal 扣款程序里面有 WinHttp.WinHttpRequest.5.1 对象,它负责把客户的信用卡信息提交到 paypal 的服务器,看来是一个核心的远程访问方法,google一下发现它居然用可以成功伪造所有 http 请求的 header 信息!下面的代码通过伪造 referer 的值,假装从百度首页提交一个表单到指定的 url 去:
var url = "http://www.yourtarget.com";
var param = "name=david&age=30";
var obj = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
obj.Open("POST", url, false);
obj.Option(4) = 13056;
obj.Option(6) = false; //false可以不自动跳转,截取服务端返回的302状态。
obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
obj.setRequestHeader("Referer", "http://www.baidu.com");
obj.Send(param);
WScript.Echo(obj.responseText);
查看详细»


Altova