相关疑难解决方法(0)

为什么不能用''来逃避单引号?

如上所述,HTML中的单引号何时变得如此受欢迎?Jquery在属性中嵌入了引用, HTML上的Wikipedia条目说明如下:

单引号字符(')在用于引用属性值时,当它出现在属性值本身内时,还必须转义为''(不应转义为'XHTML文档除外).

为什么不'应该使用?另外,"安全使用而不是"

html quotes escaping

150
推荐指数
4
解决办法
21万
查看次数

在客户端清理/重写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万
查看次数

在创建HTML元素时清理用户输入

我试图在纯HTML5和Javascript中创建一个待办事项应用程序,我遇到了清理输入的问题.

例如:如果用户输入<script>alert("XSS")</script>,则在页面上执行代码.

添加元素的代码是:

if ($('#TextArea').val() !== "") {
  var taskID = new Date().getTime();
  var taskMessage = $('#textArea').val();
  localStorage.setItem(taskID, taskMessage);
}
Run Code Online (Sandbox Code Playgroud)

而显示元素的代码是:

var i = 0;
for (i = localStorage.length; i != 0; i--) {
  var taskID = localStorage.key(i - 1);
  $('#task').append("<li id='" + taskID + "'>" + localStorage.getItem(taskID) + "</li>");
}
Run Code Online (Sandbox Code Playgroud)

有没有办法只使用HTML5和Javascript属性来清理数据?

javascript xss jquery html5

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

Javascript - 正则表达式/替换优化

我有一个脚本,允许替换不需要的HTML标签和转义引号来"提高"安全性,并主要防止脚本标记和onload注入等....这个脚本用于"纹理化"从中检索的内容innerHTML.

但是,它在我的执行时间附近乘以3(在循环中).我想知道是否有更好的方法或更好的正则表达式:

function safe_content( text ) {

    text = text.replace( /<script[^>]*>.*?<\/script>/gi, '' );
    text = text.replace( /(<p[^>]*>|<\/p>)/g, '' );
    text = text.replace( /'/g, '&#8217;' ).replace( /&#039;/g, '&#8217;' ).replace( /[\u2019]/g, '&#8217;' );
    text = text.replace( /"/g, '&#8221;' ).replace( /&#034;/g, '&#8221;' ).replace( /&quot;/g, '&#8221;' ).replace( /[\u201D]/g, '&#8221;' );
    text = text.replace( /([\w]+)=&#[\d]+;(.+?)&#[\d]+;/g, '$1="$2"' );
    return text.trim();

};
Run Code Online (Sandbox Code Playgroud)

编辑:这里有一个小提琴:https://fiddle.jshell.net/srnoe3s4/1/.小提琴script显然不喜欢javascript字符串中的标签所以我没有添加它.

javascript regex replace sanitization

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