HTML页面中的内容是唯一的?

时间:2010-02-04 19:44:02

标签: html security verification

我的问题是关于验证而不是其他任何问题。可以用什么来确定HTML文档中的唯一内容? (该文件可以具有一定程度的动态。)

考虑到您可以存储您正在验证的各种页面的“指纹”,能够使用或生成什么来识别页面是正确的页面,准确率为99%?


为清楚起见,这是加密/ https等的额外补充。此页面可以并且将根据特定用户随动态内容而变化,但指纹也是如此,但单个指纹不能100%匹配100%的用户到期动态内容的本质。因此哈希在这里不起作用,至少不是以简单的形式。

6 个答案:

答案 0 :(得分:2)

HTML页面的唯一指纹很容易计算。根据以下内容构建哈希:

  • 协议:http或https
  • 网址:域名+ uri
  • Query_string
  • 确切页面的内容直到一个字节

可选择一些标题:

  • Server
  • Content-Type这很重要
  • Content-encoding这可能也是
  • 更多想法?随意编辑它们。

这假设您没有将任何数据发布到页面。

答案 1 :(得分:1)

如果你不检查主机的IP,你甚至不能1%肯定。 接下来是加密。 (如果没有这个,你可能成为ARP poisoing的受害者(仅限于局域网)。

HTTPS中的密钥必须始终相同。

如果更改,则表示有人在作弊或密钥已更新(密钥已过期。)

答案 2 :(得分:1)

页面的指纹是主机名,端口和路径。这是唯一保证在网络上独一无二的东西。我想你也可以包括缓存标题(Last-Modified)以查看它是否发生了变化。

除此之外,如果您对html进行了哈希处理,即使最后修改的标题发生了更改,您也可以看到它是否已更改。

答案 3 :(得分:1)

假设您希望存储HTML页面的“指纹”一分钟,以便稍后在完全匹配时识别它,只需使用HTML页面的简单哈希摘要。< / p>

除非你更清楚地澄清这个问题,否则我没有理由说明为什么它应该是HTML或它是什么浏览器。

但是,这不会告诉您页面是否位于同一位置。为此,您需要存储其他详细信息,例如host / ip和path。

答案 4 :(得分:1)

如果您可以获得两个页面的文本版本,则可以区分它们。您可以确定页面中差异可接受的最大范围。

有一个Unix util(称为diff)。这个工具的win32版本也在网上浮动。维基百科有一篇关于diff的文章:http://en.wikipedia.org/wiki/Diff

维基文章列出了免费文件比较工具,“另请参阅”部分提供了指向讨论文件比较工具和增量编码的其他文章的链接。

“Levenshtein距离度量”也可能是一种有趣的方法。

CodeProject上有一个不错的C#差异引擎。由于我的低分,我无法发布另一个链接,但文章标题是:“C#中的通用,可重用的差异算法”。

答案 5 :(得分:1)

即使您拥有确切的主机名,端口和路径,如果有服务于网页的应用服务器或者网络服务器正在插入广告内容,内容仍可能不同。

如果您能够可靠地识别动态HTML部分(例如不断更新的广告或时间戳),那么我会首先规范化数据。我将删除所有空格字符(空格,制表符,换行符),然后对该内容进行哈希处理。

在哈希中包含hostname-port-path,因为这不会给“指纹”添加任何内容。 (稍后当您必须稍后重新查询Web服务器以比较HTML时,该信息非常有用。)