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

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

概述我有以下代码: var name = "Joe O'Neal";var row= [];row.push( "<td><input type='hidden' name='milestones[" + id + "].Name' value='" + name + "' class='currentRowName' /> <span class='currentRowN 我有以下代码:

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>")

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

value='" + name + "'

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

value=\"" + name + "\"

但这似乎不适用于JavaScript

解决方法 您要做的是清理您的输入.为此,您可以定义一个帮助器方法,用Unicode等效或HTML实体替换任何不安全的字符.这种东西不仅用于逃避报价,还可以帮助防止像 XSS Attacks这样的事情.

短期修复

以下内容于Escaping HTML strings with jQuery改编自Tom Gruner’s answer的另一个问题.

var entityMap = {    "&": "&amp;","<": "&lt;",">": "&gt;",'"': '&quot;',"'": '&#39;',"/": '&#x2F;'};function escapeHTML(string) {    return String(string).replace(/[&<>"'\/]/g,function (s) {        return entityMap[s];    });}

然后使用它,您将执行以下 *** 作:

var name = "Joe O'Neal";var safe_name = escapeHTML(name);var row= [];row.push(    "<td><input type='hIDden' name='milestones[" + ID + "].name'     value='" + safe_name + "' class='currentRowname'  />    <span class='currentRownameText'>" + safe_name + "</span></td>");

长期解决

如果您发现自己这么做了,那么可能是时候开始使用可以自动执行此 *** 作的模板库了.我推荐并发现有用的一个模板库是@L_403_3@.它是一个企业级模板库,默认情况下会清理你的HTML.

有关Closure模板如何帮助保护您的更多信息,您可以查看他们在security页面上的页面.

总结

以上是内存溢出为你收集整理的在构建html时,在javascript中支持撇号的正确方法是什么?全部内容,希望文章能够帮你解决在构建html时,在javascript中支持撇号的正确方法是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1081702.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存