我正在尝试使用JavaScript和正则表达式将数字HTML实体替换为其实际的Unicode字符,例如
foo's bar
?
foo's bar
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所得到的:
"foo's bar".replace(/&#([^\s]*);/g, "$1"); // "foo39s bar"
Run Code Online (Sandbox Code Playgroud)
剩下要做的就是替换号码String.fromCharCode($1),但我似乎无法让它发挥作用.我怎样才能做到这一点?
跟进我的上一个问题 ......
如果攻击者有权访问以下内容,则可以利用此代码encodedText:
return $('<div/>').html(encodedText).text();
Run Code Online (Sandbox Code Playgroud)
例如$("<div/>").html('<img src="X" onerror="alert(\'hi\');" />').text()显示警报.
此答案建议使用a textarea来避免XSS漏洞:
return $('<textarea/>').html(encodedText).text();
Run Code Online (Sandbox Code Playgroud)
这能够安全地处理以前的漏洞利用.
但是,此答案表明使用时仍存在XSS漏洞textarea:
我建议使用更安全,更优化的功能
不要使用jQuery.html().text()解码html实体,因为它不安全,因为用户输入永远不能访问DOM
我的问题是:$('<textarea/>').html(encodedText);假设攻击者可以访问,是否有任何浏览器可以利用来运行XSS encodedText?
我有一个来自XML的字符串(我无法编辑),我想通过javascript中的警告打印它.
我的字符串示例:
This is à string
Run Code Online (Sandbox Code Playgroud)
我需要在警报中打印:
This is à string
Run Code Online (Sandbox Code Playgroud)
有没有js html解码?
基本上我想在我使用之后撤消我在下面找到的escapeHTML()函数.
function escapeHtml(unsafe) {
return unsafe
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
function unescapeHtml(safe) {
return safe
.replace("&", /&/g)
.replace("<", /</g)
.replace( ">", />/g)
.replace(""", /"/g)
.replace("'", /'/g);
}
var a = escapeHtml("<div> yo & yo squirrl's </div>");
var b = unescapeHtml(a);
console.log(a);
console.log(b);//should log "<div> yo & yo squirrl's </div>"
Run Code Online (Sandbox Code Playgroud)
我尝试了明显但没有交易.http://jsfiddle.net/ej6bX/
我在 JavaScript 中查看了将字符串转换为 XML 文档,但在我的情况下找不到解决方案,有人可以帮助我吗?
我有一个像下面这样的字符串,我想将它转换为 XML 对象,我该怎么做?
<list>
<Response>
<cfgId>280</cfgId>
<recommendations><Rule>
<name>simple rule</name>
<category>none</category>
<severity>warning</severity>
<ruleEvalResult>true</ruleEvalResult>
<actionResult> Current value of maxfilesperproc is 32
increase it to 1024</actionResult>
</Rule></recommendations>
</Response>
</list>
Run Code Online (Sandbox Code Playgroud)
上述xml的可读版本
<list>
<Response>
<cfgId>280</cfgId>
<recommendations>
<Rule> <name>simple rule</name> <category>none</category> <severity>warning</severity> <ruleEvalResult>true</ruleEvalResult> <actionResult>Current value of maxfilesperproc is 32
increase it to 1024</actionResult> </Rule>
</recommendations>
</Response>
</list>
Run Code Online (Sandbox Code Playgroud)
更新,这是我尝试过的。
var xml;
$.post("/csm/rules.action",
{ sessiontoken: sessiontoken,
cfgid: cfgid},
function(xmldata)
{
xml=$(xmldata);
}
);
var htmlTable = $('<table></table>');
$(xml).find('Response').each(function(){
var …Run Code Online (Sandbox Code Playgroud) 在阅读了这个问题之后,用户警告说这种编码html的方法是不安全的
return $('<div/>').html(encodedText).text();
Run Code Online (Sandbox Code Playgroud)
"不要使用jQuery.html().text()来解码html实体,因为它不安全,因为用户输入永远不能访问DOM"
"我建议使用更安全,更优化的功能"
此方法的目的是获取编码输入,即Fish & chips产生未编码的输出,即Fish & Chips
据我了解,他们声称,对于某些价值encodedText,可以执行javascript.我试图重现此设置encodedText来<script>alert(1)</script>和其他一些简单的攻击,是无法找到的XSS漏洞的任何迹象.
我的问题是:使用时,任何浏览器中是否存在任何可证明的xss漏洞 $('<div/>').html(encodedText).text()
一些HTML名称实体不在IE8中呈现,而是我可以看到未呈现的HTML实体!例如ş或ı.
我找到了一个使用HTML编号实体的解决方案,ş而不是ş.
我不知道是否有人知道这个问题的原因,如果有办法看到ş或ı或类似实体正确IE8?
这是我在jsfiddle上的代码:(如果将此代码复制到HTML文件,它将无法在IE8中呈现)
<HTML lang="TR">
<HEAD>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<TITLE>test</TITLE>
</HEAD>
<BODY>
<p>This is not working in IE8: afişler, eşyaları, kı </p>
<p> This is working: afi&;#351;ler, eşyaları, kı </p>
<p>This is Working as well: test test–</p>
</BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud) 我是jQuery的新手.我浏览了这个<div />用作选择器的jQuery代码:
$("<div />").html(someString).text();
Run Code Online (Sandbox Code Playgroud)
首先,我想知道它是否是一个合法的标签,因为它div有一个结束标签:</div>.
但我的主要问题 - jQuery是否可以使用结束标记作为选择器,这些代码的结果是什么?
DOM中没有"结束标记"这样的东西.标签,关闭或其他,是标记的一个组件,DOM只有元素.
但jQuery是否将结束标记视为对DOM元素的引用,就像处理开始标记一样?
非常感谢你.
我正在尝试找到一种简单快捷的方法来解码和编码文本.
我发现的最好的是下面这个.
它是否有任何区别使用$("<div/>"),为什么它在这里即使没有div?
你有更简单的方法来编码和解码HTML吗?
码:
var myHTMLstring = "<p /> + <br /> sdfsdfdsfdsfsdfsdfsdfsfsfsfdsf";
var myEncoded = $('<div/>').text(myHTMLstring).html();
//<p /> + <br /> sdfsdfdsfdsfsdfsdfsdfsfsfsfdsf
var myDecoded = $('<div/>').html(myEncoded).text();
//<p /> + <br /> sdfsdfdsfdsfsdfsdfsdfsfsfsfdsf
Run Code Online (Sandbox Code Playgroud)