相关疑难解决方法(0)

在客户端清理/重写HTML

我需要显示通过跨域请求加载的外部资源,并确保只显示" 安全 "内容.

可以使用Prototype的String#stripScripts删除脚本块.但处理程序如onclickonerror仍在那里.

是否有任何图书馆至少可以

  • 剥离脚本块,
  • 杀死DOM处理程序,
  • 删除黑名单标签(例如:embedobject).

那里有任何与JavaScript相关的链接和示例吗?

html javascript security html-sanitizing

72
推荐指数
7
解决办法
8万
查看次数

如何防止用户生成的HTML中的Javascript注入攻击

我正在保存用户提交的HTML(在数据库中).我必须防止Javascript注入攻击.我见过的最有害的是style ="expression(...)"中的脚本.

除此之外,有效用户内容的公平金额将包含特殊字符和XML结构,所以我想如果可能的话,避免白名单的做法.(列出每个允许的HTML元素和属性).

Javascript攻击字符串的示例是:

1)

"你好,<dog>元素有一个<script> alert("bad!")</ script>问题......"

2)

"嗨,这个<b style ="width:表达式(警告('坏!'))">狗</ b>是黑色的."

有没有办法防止这样的Javascript,并保持其余的完整?

到目前为止,我唯一的解决方案是使用正则表达式来删除某些模式.它解决了案例1,但不是案例2.

编辑: 对不起,忘了提及环境 - 它本质上是MS堆栈:

  • SQL Server 2005
  • C#3.5(ASP.NET)
  • Javascript(显然)和jQuery.

我希望阻塞点成为ASP.NET层 - 任何人都可以制作错误的HTTP请求.

编辑2:

感谢大家的链接.假设我可以定义我的列表(他的内容将包含许多数学和编程结构,因此白名单会非常烦人)我仍然有一个问题:

什么样的解析器允许我删除"坏"部分?坏部分可能是一个完整的元素,但那么属于这些属性的脚本呢.我无法删除<a hrefs> willy-nilly.

html javascript regex parsing code-injection

52
推荐指数
3
解决办法
8万
查看次数

为什么浏览器会修改包含&#x的HTML元素的ID?

说我有这个HTML页面:

<html>
  <head>
    <script type="text/javascript">
      function echoValue(){
        var e = document.getElementById("/path/&#x24;whatever");
        if(e) {
          alert(e.innerHTML);
        }
        else {
          alert("not found\n");
        }
      }
    </script>
  </head>
  <body>
    <p id="/path/&#x24;whatever">The Value</p>
    <button onclick="echoValue()">Tell me</button>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我假设浏览器将ID字符串/path/&#x24;whatever视为简单字符串.实际上,它将其转换为&#x24;渲染表示($).

然而,javascript代码使用文字字符串&#x24;来搜索元素.因此,呼叫document.getElementById失败,我从未接受过段落的价值.

有没有办法强制浏览器按字面意思使用给定的ID字符串?


编辑:
当然我知道我不必逃避$.但是生成了网页并且生成器进行了转义.所以,我必须应付我所拥有的.

html javascript encoding

1
推荐指数
1
解决办法
125
查看次数