0

我正在使用 Ajax 发布网站的评论。

不,用户也可以在文本框中编写一些脚本。

问题是我想对它进行 HTML 编码 (REMOVE html tags,scripts ETC)

表示删除 html 元素。

就目前而言,我做了一次不成功的尝试:

 var textData = $("'" +  $('#textBox').val() + "'").text();

但这对我来说是一个荒谬的尝试。虽然它有时会起作用,但它可能会因特殊符号等而失败。

任何帮助是这方面的深表感谢。

谢谢你。

编辑:

每当用户发布评论时,我都会将评论发送到服务器,并在服务器端对其进行编码并将其保存到数据库,并在客户端更新我的 HTML。我不想从服务器取回编码消息

4

3 回答 3

3

正如其他人所说,不要这样做。在服务器上解决。

但是,仅对发送的任何内容进行 HTML 编码的最短方法(即实际打印输出<b>x</b>是这样的:

var yourText = $('#textbox').val(); // or whatever
var yourTextHTML = $('<span></span>').text(yourText).html();
于 2012-06-14T10:39:32.390 回答
0

你真的不应该做这个客户端。攻击者可以只发表评论,使用调试工具(如Fiddler )拦截请求,修改它以使其包含一些禁止字符 - 你是XSS ed。

强烈建议您改为在服务器上执行此操作。在将其写入文档之前,只需在 PHP(或您正在使用的任何服务器端脚本语言的等效函数)中传递每个注释htmlentities,这将使所有 XSS尝试无效。

于 2012-06-14T10:27:10.087 回答
0

当您在博客页面中而不是在客户端显示评论时,您应该进行编码,这将有助于避免 XSS 攻击和其他攻击。编码不是关于删除 html、脚本标签,而是关于将尖括号表示为字符实体名称。

例如。

you have written a nice article<script></script>

编码后

"you have written a nice article&lt;script&gt;&lt;/script&gt;"
于 2012-06-14T10:28:10.983 回答