【问题标题】:How to forbid javascript execution?如何禁止javascript执行?
【发布时间】:2013-02-16 10:33:09
【问题描述】:

我有一个站点,其中包含来自远程服务器的 AJAX 加载代码。如何禁止执行可能来自远程服务器的代码? “noscript”标签真的足够了吗?

我认为我们不应该关注</noscript><script>...</script>即将到来的情况。

提前致谢!

【问题讨论】:

  • 这完全取决于您如何处理加载的数据。展示你正在用它做什么
  • @Pekka웃 只需将其嵌入到某个“div”块中即可。
  • 你是如何嵌入它的?
  • @Pekka웃 另一个脚本通过 AJAX 请求加载该代码。
  • 为什么不显示实际代码,以便有人真正告诉您是否有什么需要担心的?

标签: javascript asp.net .net ajax asp.net-mvc


【解决方案1】:

如何禁止执行可能来自远程服务器的代码?

向您自己的服务器发出 Ajax 请求。从您的远程服务器请求数据。通过 HTML 解析器和白名单(XSS 过滤器)运行它。然后返回给客户端。

“noscript”标签真的够用吗?

如果 浏览器 不支持 JS,

noscript 提供浏览器应该忽略的内容。它不提供任何类型的沙盒。

【讨论】:

  • 不对接收到的可能执行任何脚本的数据做任何事情不是更容易吗?
  • @Quentin 这个想法是做一个 SaaS 服务,应该提供这样的代码块。所以现在我坚持如何向潜在客户保证(甚至部分),这样就不会有任何病毒或 XSS 攻击通过传输块。
  • @kseen 那么昆汀的回答就是你所需要的。 Run it through an HTML parser and a whitelist (an XSS filter).这不是微不足道的
  • @kseen 所以你希望能够在客户端下载JS代码到执行,但同时你不想执行代码?请说明您希望如何做到这一点。
  • @CodeCaster 我只想下载一些带有布局的标识符。喜欢<p style="color: red">ATT10123</p>
【解决方案2】:

您可以针对要通过 ajax 加载的特定元素(使用选择器)。例如(希望这不会令人困惑,但这里是这样):

http://jsbin.com/efazun/2 - (第 1 页) 有一个警报,在页面加载时显示“hello world”。

http://jsbin.com/ezewep/4/edit(第2页)-使用jquery load来加载第1页,显示hello world(加载时执行脚本-不好)

http://jsbin.com/ezewep/2/edit (Page 3) - 使用 jquery load 来加载 Page 1,但只针对文本,不执行任何脚本(没有 hello world 消息)。

欲了解更多信息:http://api.jquery.com/load/

【讨论】:

  • 感谢您的回复。我认为使用 jQuery 对我的任务来说效率不高(因为我想做一个 SaaS 服务)。我只需要可以与任何 brpwser 一起使用并剪切任何 js 执行的原生“原始”代码。类似的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
  • 2017-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多