在JavaScript中,我們時常需要將JSON字符串轉換成JavaScript對象進行操作,或將JavaScript對象轉換為JSON字符串便于傳輸??墒?,在使用eval函數對JSON字符串進行解析時,可能會遭受一些安全風險。
var str = '{"name": "Tom", "age": 20}'; eval('var obj = ' + str + ';');
看上去,這段代碼沒有任何問題,但是,如果JSON字符串中包含了非法字符或惡意代碼,eval將會直接執行這些代碼。攻擊者可能通過JSON字符串注入攻擊代碼,造成安全漏洞。
為了避免這樣的情況,我們可以使用JSON.parse()方法。它將會快速地將JSON字符串轉化成JavaScript對象。
var obj = JSON.parse('{"name": "Tom", "age":20}');
而在將JavaScript對象轉化為JSON字符串時,我們常常使用JSON.stringify()方法:
var obj = {"name": "Tom", "age":20}; var str = JSON.stringify(obj);
使用JSON.parse()和JSON.stringify()方法將JSON字符串與JavaScript對象互相轉化,可以避免使用eval()函數造成的安全漏洞。