对包含html实体的文本框执行jQuery val()
我用一把简单的js小提琴设置了我的问题对包含html实体的文本框执行jQuery val(),jquery,html,encoding,Jquery,Html,Encoding,我用一把简单的js小提琴设置了我的问题 $(“#yo”).val('hell';o') 基本上,我想知道是否有一种方法可以显示撇号而不是编码的字符串。我在服务器上对这样的值进行了编码,以防止xss攻击,因此解码实际上不是一个有效的选项 谢谢您可以替换$39;在JS中使用“by”,并将其替换回服务器端 <input type="text" id="yo"> $("#yo").val('hell'o'.replace(''',"'")) $(
$(“#yo”).val('hell';o')
基本上,我想知道是否有一种方法可以显示撇号而不是编码的字符串。我在服务器上对这样的值进行了编码,以防止xss攻击,因此解码实际上不是一个有效的选项
谢谢您可以替换$39;在JS中使用“by”,并将其替换回服务器端
<input type="text" id="yo">
$("#yo").val('hell'o'.replace(''',"'"))
$(“#yo”).val('hell';o'。替换('';',“'))
基本上,我想知道是否有一种方法可以显示撇号而不是编码的字符串
没有什么是正常的
value属性处理文本,而不是HTML
作为一种可怕的黑客,您可以通过解析HTML然后读取生成的文本节点将其转换为文本
$("#yo").val($("<div />").html('hell'o').text());
$(“#yo”).val($(“”).html('hell';o').text());
…但不要。而是解决真正的问题
我已经在服务器上对这样的值进行了编码,以防止xss攻击
不要那样做
您将数据插入JavaScript,而不是HTML
当你不处理HTML时,不要为HTML辩护。这会让你变得脆弱
对插入JavaScript的数据进行编码的适当方法是使用JSON编码器。(如果将JSON放在HTML属性值中,则使用实体对生成的JSON进行编码;如果将其放在
元素中,则对任何/
字符进行转义) 试试这个
var test = 'hell'o';
var decoded = $('<div/>').html(test).text();
$("#yo").val(decoded);
var测试='hell';o';
var decoded=$('').html(test.text();
$(“#yo”).val(已解码);
这应该对您有所帮助
var tp = 'hell'o';
var new_tp = $('<textarea />').html(tp).text();
$('#yo').val(new_tp);
var-tp='hell';o';
var new_tp=$('').html(tp.text();
$('yo').val(新的);
有很多html实体-我真的不想全部替换它们,但感谢您的建议,我对此表示感谢。正确的编码方式在视图中,您可以按照数据的使用方式进行编码。我确实向管理层表明了这一点,他们告诉我他们没有时间这么做。作为解决办法,我只是在后端使用antixss编码器编码!我不明白你在这里想干什么。元素是
input type=“text”
,但您的代码附加到textarea
元素。它也与inputvar new\u tp=$('').html(tp).text()一起工作代码>
var tp = 'hell'o';
var new_tp = $('<textarea />').html(tp).text();
$('#yo').val(new_tp);