php htmlspecialchars and jquery .text()
php htmlspecialchars and jquery .text()
我最近遇到了一个问题。我有一个用户可以发布内容的系统。其中一个字段是标题字段。因此,为了安全地保存用户输入,我在用户提交的标题上使用了htmlspecialchar,并将其发送到一个函数,然后保存到数据库中(在使用mysql_real_eescape之后(
现在在客户端,我使用json-get获取这个标题
$.getJSON("PHPFILE", function(json) {
// let's say json.title is the title we need so...
var title = json.title;
}
现在的问题是,这个用户给定的标题值可以包含任何内容,甚至html标签(作为参考,假设它现在包含
<script>alert('');</script>Some Text!
因此,由于我使用jquery,我想使用.text((函数清除那些
var cleanTitle = $(title).text();
alert(cleanTitle);
然而,这立即引发了一个错误。铬上写着
Uncaught Error: Syntax error, unrecognized expression ...
因此,我验证了这个标题变量是否是字符串。它确实是一根绳子。(顺便说一句,由于某种原因,如果这个变量只包含数字,就没有错误(
然而,使用以下内容给了我文本,但标签没有被删除
var cleanTitle = $.parseHTML(title);
cleanTitle = $(cleanTitle).text();
alert(cleanTitle);
此输出
<script>alert('')</script>Some Text!
如何删除所有html标签?有什么建议吗?我计划使用此标题文本来设置浏览器标题。谢谢
document.title = $('<div />').append( $('<div />').html( title ).text() ).text();
将字符串追加两次应该可以解决htmlentities问题。
由于您使用MySQL作为引擎来存储此类数据,因此显然您使用的是PHP脚本。建议:使用PHP的strip_tag((,让PHP来做这项工作可以减少jQuery/Javascript的"工作量"。
相关文章:
- 在文本区域中使用jQuery.text()保持换行符
- 我如何在INPUT TEXT中使用这个Javascript和jQuery
- 多个嵌套元素上的jQuery.text('')
- jQuery:如何在没有for循环的情况下将事件处理程序应用于$('#text'+'任意整数
- text区域换行jquery
- 带有cordova的ios上的Jquery.text()无法正常工作
- jquery insert-before to text in the same DOM
- jQuery - 对使用 .text() 检索的数字使用 .split() 会增加很多空项
- 将函数传递给jquery text()方法
- Jquery validation if checkbox checked text box得到class=“”;表单输
- 在JQuery中设置$(this).text的样式
- 图表标题来自<输入类型='text'>使用jquery
- Jquery onload/text效果后期反应
- jquery text()删除html标记并合并文本
- 从jquery中的select选项添加两个不同的数组值(text&value)
- 设置'字体大小'jQuery不处理所选Text的最后一个元素
- jquery模态对话框通过id获取输入类型text的值
- jQuery函数.text()的工作不正确
- text jquery对话框内的区域
- Inputosaurus Text + jQuery UI Sortable