【问题标题】:How to validate javascript and html code? [closed]如何验证 javascript 和 html 代码? [关闭]
【发布时间】:2016-03-02 14:20:31
【问题描述】:

在我们的应用程序中,为最终用户提供了一个文本框,他们可以在其中粘贴他们的 html 或 javascript 代码来创建类似于 Google 广告的广告,因此我需要验证这些 html 和 js 源代码是否针对恶意代码以及正确的语法。 那么在 java 中有没有可用的 API 来做同样的事情呢?

提前致谢 阿里。

【问题讨论】:

  • 没有任何可靠的方法来验证原始 HTML/Javascript。
  • 对于 html 代码验证 Jtidy 可以使用,但对于 Javascript 代码验证和恶意代码我找不到任何东西。
  • 我同意 Marie 的观点:如果您允许用户输入 any HTML 和 JavaScript,您将不知道会做什么,尤其是 JavaScript。该脚本可能会从外部源加载一些恶意代码,或者可能会访问有效的代码 - 用户可能会通过稍后更改源来欺骗您。您最好只允许您提供的一组特定功能。
  • 在客户端进行清理毫无意义,因为用户可以通过使用代理轻松绕过您的保护。您应该永远信任发送到服务器的用户输入。
  • 但google也允许用户以这种方式制作广告

标签: javascript java html


【解决方案1】:

验证 JS 客户端 只对你的好用户有用 - 因为恶意用户无论如何都可以绕过任何客户端验证代码(通过弄乱应该进行验证的 JS)。

验证 JS 服务器端 以寻找“恶意”在一般意义上是不可能的,除非你有一个非常严格的白名单来检查。最好在沙箱中执行以防止坏事,并完全避免验证(=在执行之前检查有效性)。

所以,JavaScript 沙盒。最常用的可能是Google Caja - 也可以防止坏的html/css。沙箱化并不容易——特别是,Caja 需要一个服务器端部分来“哄骗”文件并保护主机页面;并且需要预先识别出 div 之外的主机页面的任何部分。

另请参阅另一个 SO 问题中的一些 alternatives。请注意,它们中的许多不允许从受保护的代码访问 DOM,因此对于实际上必须在屏幕上显示内容的 JS 没有用处。

【讨论】:

    【解决方案2】:

    如果您搜索它,您可以在 Internet 上找到很多资源。这里有一些:Java Encoder ProjectJava HTML Sanitizer。我从未使用过它们,但这是一个起点。如果您自己进行研究,您可以学到很多东西。

    编辑:目前尚不清楚您是在寻找 Java API 还是 JavaScript API。它们完全不同。

    【讨论】:

      猜你喜欢
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      • 1970-01-01
      • 2015-08-31
      • 2011-09-24
      相关资源
      最近更新 更多