相关疑难解决方法(0)

在使用Javascript将其添加到DOM之前清理用户输入

我正在为我在空闲时间工作的聊天应用程序编写JS,我需要根据用户提交的数据更改HTML标识符.这通常是概念上不稳定的东西,我甚至都不会尝试它,但这次我不认为自己有很多选择.我需要做的是转义HTML id以确保它不允许XSS或破坏HTML.

这是代码:

var user_id = escape(id)
var txt = '<div class="chut">'+
            '<div class="log" id="chut_'+user_id+'"></div>'+
            '<textarea id="chut_'+user_id+'_msg"></textarea>'+
            '<label for="chut_'+user_id+'_to">To:</label>'+
            '<input type="text" id="chut_'+user_id+'_to" value='+user_id+' readonly="readonly" />'+
            '<input type="submit" id="chut_'+user_id+'_send" value="Message"/>'+
          '</div>';
Run Code Online (Sandbox Code Playgroud)

逃避id避免上述任何问题的最佳方法是什么?正如你所看到的,现在我正在使用内置escape()函数,但我不确定它与其他替代品相比有多好.我主要习惯在输入文本节点之前清理输入,而不是id本身.

javascript xss escaping

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

转义AngularJS指令中的HTML文本

是否有一个角度JS命令将在文本上进行HTML转义?我正在处理一个自定义指令,并需要转义它生成的一些输出.

在内部,AngularJS sanitzer使用encodeEntities函数,但不暴露它.我知道我可以复制这个函数,但似乎应该有一个标准的方法来做到这一点.


用例:我有一个自定义指令,用于语言本地化.该指令使用数据文件中的键查找来查找语言文本.在某些情况下,允许此文本包含HTML,和/或该指令生成HTML以改进最终的可视格式.此外,该指令将Angular表达式作为参数,并将它们用作字符串中标记的替换.我需要对这些参数进行编码,因为它们可能不是HTML安全的.

例如,该指令被称为属性i18n-html='welcome_text_html,1+1,user.name'.该指令然后按照描述格式化字符串并用于element.html更新DOM节点.

angularjs

27
推荐指数
2
解决办法
6万
查看次数

将JSON数据放入隐藏的html表单输入中?

我正在构建一个使用大量数据的富Web应用程序.当我建造它时,我发现我一遍又一遍地重复着自己.

这就是问题.我需要将隐藏的应用程序逻辑放入html元素中以表示客户端正在查看的数据.

这是我前段时间发现的解决方案:

<a href="bla" data-itemId="1" .... more data.
Run Code Online (Sandbox Code Playgroud)

这种方法存在两个问题.

  1. 我不能代表数组.
  2. 这只是丑陋的.

我搜索了一个解决方案,但没有找到任何东西.我也去了facebook,打开了firebug,发现了这个:

{"actor":"19034719952","target_fbid":"454811929952","target_profile_id":"19034719952","type_id":"7","source":"1","assoc_obj_id":"","source_app_id":"","extra_story_params":[],"content_timestamp":"1324385453","check_hash":"9eabc3553e8a2fb6"}
Run Code Online (Sandbox Code Playgroud)

这个json在一个input[type=hidden]元素里面.

我试着做同样的事情 json_encode();

<input type="hidden" name="track" value="{"_id":{"$id":"4eee908f615c2102e9010000"},"link":"george-wassouf-flag-of-my-heart-longing","file":"\/m\/tracks\/t.4eee908daca2a3.49941874.mp3","lyrics":null,"freezed":false,"hits":0,"images":{"large":"\/assets\/static\/default.track.large.jpg","thumb":"\/assets\/static\/default.track.thumb.jpg","icon":"\/assets\/static\/default.track.icon.jpg"},"duration":"300","created":{"sec":1324257423,"usec":78000},"albums":[{"_id":{"$id":"4eee8d63615c21f6e7000000"},"names":{"ar":"\u0643\u0644\u0627\u0645\u0643 \u064a\u0627 \u062d\u0628\u064a\u0628\u064a","en":"Kalamak ya Habibi"},"link":"george-wassouf-kalamak-ya-habibi","images":{"original":"\/m\/pics\/albums\/o.4eee8d612c3183.11879972.jpg","poster":"\/m\/pics\/albums\/p.4eee8d63967072.02645896.jpg","large":"\/m\/pics\/albums\/l.4eee8d63a89111.20372767.jpg","small":"\/m\/pics\/albums\/s.4eee8d63b18927.47242533.jpg","thumb":"\/m\/pics\/albums\/t.4eee8d63b7f1f4.11879932.jpg","icon":"\/m\/pics\/albums\/i.4eee8d63bf1304.59902753.jpg"}},{"_id":{"$id":"4eee8d63615c21f6e7000000"},"name":"Kalamak ya Habibi","link":"george-wassouf-kalamak-ya-habibi"}],"name":"Flag of my heart longing","title":"Flag of my heart longing","mp3":"\/m\/tracks\/t.4eee908daca2a3.49941874.mp3","poster":"\/m\/pics\/artists\/p.4eee85cd7ed579.65275366.jpg","artists":[{"_id":{"$id":"4eee85cd615c21ece6000000"},"name":"George Wassouf","link":"george-wassouf"}]}" />
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试获得价值时,我得到了这个{.

我已经尝试了所有常量JSON_HEX_TAG,但没有发现任何类型的问题.

如何正确地将json放入html然后用jquery/javascript获取它?

html javascript php json

18
推荐指数
1
解决办法
4万
查看次数

带有jQuery ajax的字符串中的单引号

我遇到了用户输入数据的问题,如果有单引号,脚本就会出错.

处理用户输入的单引号的最佳方法是什么,因此它不会干扰jquery/javascript?

更新:

我通过ajax将它发送到数据库.这是json ajax调用的数据参数.
data: "{str_" + sectionName + " :'" + UpdateText + "',EntityID: '" + EntityID + "' }",
更新文本是可以包含引号的字符串.

javascript string jquery escaping

10
推荐指数
3
解决办法
4万
查看次数

什么是替换性能秘密?[HTML转义]

我花了一些时间寻找最好的方法来逃避html字符串并找到一些讨论:讨论1 讨论2.它引导我替换所有功能.然后我做了性能测试,并试图找到实现类似速度的解决方案,但没有成功:(

这是我的最终测试用例集.我在网上找到它并随着我的尝试扩展(底部有4个案例)但仍无法达到replaceAll()性能.

什么是秘密女巫使replaceAll()解决方案如此迅速?

映入眼帘!

代码片段:

String.prototype.replaceAll = function(str1, str2, ignore) 
{
   return this.replace(new RegExp(str1.replace(/([\/\,\!\\\^\$\{\}\[\]\(\)\.\*\+\?\|\<\>\-\&])/g,"\\$&"),(ignore?"gi":"g")),(typeof(str2)=="string")?str2.replace(/\$/g,"$$$$"):str2);
};
Run Code Online (Sandbox Code Playgroud)

qwerty的学分

迄今为止最快的案例:

html.replaceAll('&', '&amp;').replaceAll('"', '&quot;').replaceAll("'", '&#39;').replaceAll('<', '&lt;').replaceAll('>', '&gt;');
Run Code Online (Sandbox Code Playgroud)

javascript performance

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

在JSON驱动的jQuery数据表中转义标记?

我正在使用jquery数据表,它使用该sAjaxSource属性动态加载一些JSON .一切都很好,除了加载的内容被视为潜在的标记,所以如果单元格中的文本包含<或某些东西,事情会变得奇怪.

在将数据加载到表中之前,如何让数据表转义我的数据?我不想做服务器端,因为服务器不应该关心客户端将如何处理数据.

javascript jquery datatables

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

显示由ajax,Jquery返回的响应的html代码

我有一个jquery AJAX函数,它检索一些HTML标记并在页面上显示它.我还想显示返回此HTML的html代码.我四处寻找解决方案,但没找到任何解决方案.有人可以请帮助.非常感谢

$.post('get_news.php', $("#gifForm").serialize(), function(data) {
     //Show HTML
     $('#output').html(data);

     //Show HTML code
     $('#output_code').html(data);
});
Run Code Online (Sandbox Code Playgroud)

html javascript jquery

9
推荐指数
1
解决办法
4万
查看次数

有没有一种简单的方法可以在JavaScript中将文本转换为HTML?

可能重复:
使用jQuery JavaScript/jQuery HTML编码转义HTML字符串

例如,如果我想向用户显示x < 3HTML中的字符串,我需要替换该<字符&lt;.是否有预先构建的函数可以在JavaScript或jQuery中执行此操作,将任何文本字符串转换为相应的HTML?

html javascript jquery

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

jQuery html() 方法是否存在类似innerHTML 的安全风险?

我最近正在阅读一本 JavaScript 书,发现使用 innerHTML 传递纯文本会带来安全风险,所以我想知道使用html()jQuery 方法是否会带来同样的风险?我试图研究它,但我找不到任何东西。

例如:

$("#saveContact").html("Save"); //change text to Save

var saveContact = document.getElementById("saveContact");
saveContact.innerHTML = "Save"; //change text to Save
Run Code Online (Sandbox Code Playgroud)

据我所知,它们做同样的事情,但它们是否都带来了相同的安全风险,即有人能够注入一些 JavaScript 并执行它?

我对安全不是很了解,所以如果有任何不正确或解释不正确的地方,我提前道歉。

html javascript security jquery

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

在构建html时,在javascript中支持撇号的正确方法是什么?

我有以下代码:

var name = "Joe O'Neal";

var row= [];
row.push(
  "<td><input type='hidden' name='milestones[" + id + "].Name' 
   value='" + name + "' class='currentRowName'  />
    <span class='currentRowNameText'>" + name + "</span></td>")
Run Code Online (Sandbox Code Playgroud)

但问题是我有一个名称变量中有撇号的情况,所以它导致了这个问题:

  value='" + name + "'
Run Code Online (Sandbox Code Playgroud)

写这个的正确方法是什么,以避免与撇号发生冲突?在C#中,我会做类似的事情

  value=\"" + name + "\"
Run Code Online (Sandbox Code Playgroud)

但这似乎不适用于JavaScript

javascript jquery apostrophe double-quotes

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