localStorage数据包含JSON恶意数据。可以修复吗?

时间:2017-05-18 17:36:40

标签: javascript json

我正在开发一个网站,用于跟踪用户点击的链接。数据以localStorage中的字符串形式存储。我知道localStorage中的字符串数据可以使用JSON.parse转换为JS对象。问题是存储的url字符串包含对JSON无效的字符。我收到了错误:

1_0.html:1 Uncaught SyntaxError: Unexpected token h in JSON at position 0
    at JSON.parse (<anonymous>)
    at trackLink (tracking_functions.js:318)
    at HTMLAnchorElement.onclick (1_0.html:46)

我尝试在使用this suggestion通过JSON解析器发送字符串之前清理字符串,但这并不能解决问题。我不确定清除字符串是否是一个选项,因为它可能使url字符串无法用作超链接。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

  

encodeURI()此函数对特殊字符进行编码,但:/,? :@&amp; = + $#(使用encodeURIComponent()对这些字符进行编码)。

  

encodeURIComponent()此函数对特殊字符进行编码。另外,它编码以下字符:,/? :@&amp; = + $#

你必须这样做

var url = "https://a.but/#safe=active&q=sf";
var json = {"link": encodeURIComponent(url)}
localStorage.setItem("urls", JSON.stringify(json));