【问题标题】:Dynamically Obfuscate HTML动态混淆 HTML
【发布时间】:2012-01-02 15:30:21
【问题描述】:

我想知道是否有任何方法可以在实时服务器上动态混淆 html 而不是离线,所以只要访问我的网站,源就会被混淆而不是纯文本。

【问题讨论】:

  • 你希望从中获得什么?
  • 没什么,我只是看看有没有可能。
  • 嗯,你不能真正“混淆”HTML,因为它必须在一个定义了标签名称的定义结构中。但是,您可以删除所有 cmets、删除所有非重要的空格等,这会使整个内容变得 tiny 不太容易阅读。但是任何拥有现代浏览器的人都可以打开它的开发工具并以缩进、易于阅读的格式输出 HTML。

标签: html obfuscation


【解决方案1】:

由于客户端(浏览器)必须将其解析为合理的 DOM 树,因此这几乎是徒劳的。如今,使用 Firebug/Webkit Inspector 检查站点变得更加普遍,它提供了格式良好、可导航的树。大多数人甚至不会注意到 HTML 被“混淆”了,更不用说被它阻止了。

可执行代码可以通过最小化变量名等来混淆而不改变结果。 HTML 的结果,但是,如果你改变它的任何东西,结果就会改变。因此,无论如何,“混淆”主要限于创造性地使用间距。

【讨论】:

  • @Samuel 正是我的意思,任何像样的检查工具都会浏览一下。
【解决方案2】:

您应该问自己的真正问题是“为什么我需要混淆 HTML?”。如果您要隐藏敏感信息,那么您应该对该数据进行加密,或者从不将其呈现给客户。

大多数敏感信息或交易应该发生在服务器上,而客户端只接收一个令牌,或加密信息,或一个可以来回传递的唯一交易标识符。

【讨论】:

    【解决方案3】:

    让我这样说吧:没有办法动态地混淆您网站上的 HTML,以至于任何有能力的人都无法获得它。

    1. 您可以使用 JavaScript 尝试对其进行模糊处理,但您必须以一种不会真正影响 DOM 的方式进行处理。
    2. 您可以使用 JavaScript 生成页面本身的内容,但这可能会损害可访问性,并且 DOM 必须再次处于浏览器可以使用的状态。
    3. 您可以在源代码中插入大量空白,但这也很容易克服。

    所有这一切,让管理您的网站变得更加困难和烦人。缩小有其目的,但这里的混淆是双输的。

    【讨论】:

      【解决方案4】:

      您可以搜索并删除所有制表符、换行符、多余的空格和 cmets

      【讨论】:

        【解决方案5】:

        如果你使用 php,IonCube 有一个插件。可以在这里找到:http://www.ioncube.com/html_encoder.php 它会将您的 html 页面转换为缩小的 javascript。

        【讨论】:

        • 是的,您确实遇到了不打开 javascript 的人,但它确实发生了。您不能以任何其他方式真正混淆代码。其他所有内容都只是将其全部放在一行上并添加间距,但大多数浏览器在查看源代码时会对此进行部分补偿。
        • @Lord_Dracon,当时的答案是相关的,因为 PHP 5.5 在这个答案之后将近 5 年没有发布。您在发布之前找到的任何答案都不会在新版本中进行测试。那么,为什么要投反对票?
        • 对于那些来这里知道答案已经过时的人。当时它可能是相关的,但它浪费了我的时间,直到我发现它不再有效。
        • @Lord_Dracon 所以发表评论吧。模糊 HTML 代码是一个过时的过程,因为它很容易不当。今天仍然使用的大多数使用其他使用 NodeJS/NPM 存储库构建的工具来协助今天的混淆。此外,该链接甚至声明它不适用于比 PHP 5.4 更新的版本,因此不应该浪费太多时间。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-22
        • 2020-11-29
        • 2013-06-09
        相关资源
        最近更新 更多