Javascript HTML编码客户端输入类型文本(文本框)的内容(使用Jquery等)
我正在使用Ajax发布网站的评论 不,用户也可以在文本框中编写一些脚本 问题是我想对它进行HTML编码(删除HTML标记、脚本等) 表示删除html元素 到目前为止,我做了一次不成功的尝试:Javascript HTML编码客户端输入类型文本(文本框)的内容(使用Jquery等),javascript,jquery,html,Javascript,Jquery,Html,我正在使用Ajax发布网站的评论 不,用户也可以在文本框中编写一些脚本 问题是我想对它进行HTML编码(删除HTML标记、脚本等) 表示删除html元素 到目前为止,我做了一次不成功的尝试: var textData = $("'" + $('#textBox').val() + "'").text(); 但这是我荒谬的尝试。虽然它有时会工作,但可能会因特殊符号等而失败 对此,我们深表感谢 多谢各位 编辑: 每当用户发布评论时,我都会将评论发送到服务器,在服务器端对其进行编码并保存到DB,
var textData = $("'" + $('#textBox').val() + "'").text();
但这是我荒谬的尝试。虽然它有时会工作,但可能会因特殊符号等而失败
对此,我们深表感谢
多谢各位
编辑:
每当用户发布评论时,我都会将评论发送到服务器,在服务器端对其进行编码并保存到DB,同时在客户端更新我的HTML。我不想从服务器上取回经过编码的消息您真的不应该在客户端执行此操作。攻击者只需发布一条评论,使用调试工具(如)截获请求,修改请求,使其包含一些禁止的字符,就可以阻止您
强烈建议您改为在服务器上执行此操作。在将每个注释写入文档之前,只需通过PHP中的
htmlentities
(或您正在使用的任何服务器端脚本语言的等效函数),这将使尝试变得无用。您真的不应该在客户端执行此操作。攻击者只需发布一条评论,使用调试工具(如)截获请求,修改请求,使其包含一些禁止的字符,就可以阻止您
强烈建议您改为在服务器上执行此操作。在将注释写入文档之前,只需通过PHP中的
htmlentities
(或您正在使用的任何服务器端脚本语言的等效函数)传递注释,这将使尝试无效。当您在博客页面中显示评论时,应该进行编码,而不是在客户端,这将有助于避免XSS攻击和其他攻击。编码不是删除html、脚本标记,而是将尖括号表示为字符实体名称
例如
you have written a nice article<script></script>
您应该在博客页面中显示评论时进行编码,而不是在客户端,这将有助于避免XSS攻击和其他攻击。编码不是删除html、脚本标记,而是将尖括号表示为字符实体名称 例如
you have written a nice article<script></script>
正如其他人所说,请不要这样做。在服务器上解决它
但是,对发送的内容进行HTML编码(即,实际打印出x
的最短方法是:
var yourText = $('#textbox').val(); // or whatever
var yourTextHTML = $('<span></span>').text(yourText).html();
var yourText=$('#textbox').val();//或其他任何内容
var yourTextHTML=$('').text(yourText.html();
正如其他人所说,请不要这样做。在服务器上解决它
但是,对发送的内容进行HTML编码(即,实际打印出x
的最短方法是:
var yourText = $('#textbox').val(); // or whatever
var yourTextHTML = $('<span></span>').text(yourText).html();
var yourText=$('#textbox').val();//或其他任何内容
var yourTextHTML=$('').text(yourText.html();
您应该始终在服务器端执行此类操作-您不能保证某些厚颜无耻的黑客不仅仅是将数据发布到您的服务器并绕过所有客户端验证。您不仅应该在服务器端执行此操作,而且应该在最后一刻(即在将数据插入HTML之前)执行此操作。您应该始终在服务器端执行此类操作-您不能保证某些厚颜无耻的黑客不仅仅是将数据发布到您的服务器并绕过所有客户端验证。您不仅应该在服务器端执行此操作,而且应该在最后一刻(即在将数据插入HTML之前)执行此操作。每当用户发布评论时,我都会将评论发送到服务器,在服务器端对其进行编码并保存到DB,同时在客户端更新我的HTML。我不想从服务器获取编码消息每当用户发布评论时,我都会将评论发送到服务器端,在服务器端对其进行编码并保存到DB和客户端侧边更新我的HTML。我不想从服务器取回编码的邮件。我需要像这样使用var yourTextHTML=$('').text(yourText).text();不是吗?要删除HTML etcNo,只需以纯文本形式返回标记。使用.HTML(yourText).text()
会做你想要做的事情,但这会产生副作用,可能会通过解析HTML来做你想避免的事情。我需要像这样使用var yourTextHTML=$('').text(yourText).text();不是吗?要删除HTML etcNo,只会以纯文本形式返回标记。使用.HTML(yourText).text()
会做你想做的事情,但这会产生副作用,可能会通过解析HTML来做你想避免的事情。