如何净化用户输入文本,使其可以在Javascript/JSON中使用
How to sanitize user input text so that it can be used in Javascript/JSON?
我有一个web应用程序,我允许一些大的文本输入使用文本字段。该文本被保存到数据库中,然后作为JSON响应中的字段发送回用户。在浏览器中,我尝试使用JSON.parse
将其简单地转换为Object
,但这有时会失败,这取决于用户在字段中输入的内容。
我认为现在,文本中有单引号,这些在我调用JSON.parse
之前破坏了浏览器端Javascript。
清理该数据的最佳方法是什么?在理想情况下,我可以在保存后将其解析回Object
,并进行最小的清理。
这不是一个处理问题:您可以很好地在JSON中放入带引号的字符串:编码只是转义它们。
你的问题是编码问题。要在浏览器中构建JSON字符串,请使用JSON.stringify。要在服务器端完成它,您应该使用(未提及的)服务器端语言/框架提供的工具。
使用JSON的好处是您不需要清理任何内容。无论你给JSON编码器提供什么,它总是输出纯JSON。显然,如果您计划在HTML页面中使用JSON,则需要对其进行HTML编码。根据JS编码器,你需要确保那里没有</script>
(例如用'/
替换/
)。
您也不需要JSON.parse
。JSON是JavaScript的一个子集,所以你可以这样做(为了简单,像php一样):
<script>
var obj = <?= json_encode($whatever) ?>;
</script>
如果你真的想在JSON中包含JSON作为字符串,考虑不要这样做。你可以只使用对象本身——不需要在JSON数据中使用JSON 字符串。但如果你有这个,它也应该总是有效的
相关文章:
- Javascript JSON.parse not working
- Javascript:JSON请求仅在第一次工作
- 定义this.properties或objectName.properties的javascript JSON对象
- Javascript/JSON警报返回Undefined
- 使用XPath样式访问Javascript JSON对象属性
- JavaScript JSON关联对象键和值都作为日期时间戳
- Javascript-JSON-嵌套和分组
- Javascript json返回未定义
- 无标题Javascript JSON数组->CSV导出
- Javascript JSON对象替换对象中的字符串
- Javascript/Json日期转换问题
- 使用jstl c:forEach在迭代jsp bean上创建javascript json对象
- 为什么我的JavaScript / JSON脚本不能在Internet Explorer中工作
- 将数据从 Python 发送到 Javascript (JSON)
- JavaScript Json 值追加基于相等条件
- 在设置用户后,从 JavaScript JSON 请求中获取 Web 服务 (asmx) ASP.NET Windows
- JavaScript - JSON 数据结构的构建 - 如何使用变量值更改键名
- Javascript JSON 解析和字符串化用于多级
- 如何将数据 php 更改为 javascript json
- Javascript JSON 到 Excel 文件下载