使用parseJSON代替eval

简介: 有些程序员如果没有很好的在javascript中解析json数据,往往会直接eval把json转成js对象,这时候如果json的数据中包含了被注入的恶意数据,则可能导致代码注入的问题。正确的做法是分割出json里包含的特殊字符,然后再解析为对象  1 parseJSON: function(...

有些程序员如果没有很好的在javascript中解析json数据,往往会直接eval把json转成js对象,这时候如果json的数据中包含了被注入的恶意数据,则可能导致代码注入的问题。

正确的做法是分割出json里包含的特殊字符,然后再解析为对象
 

 1 parseJSON: function( data ) {
 2   if ( typeof data !== "string" || !data ) {
 3    return null;
 4   }
 5 
 6   // Make sure leading/trailing whitespace is removed (IE can't handle it)
 7   data = jQuery.trim( data );
 8   
 9   // Make sure the incoming data is actual JSON
10   // Logic borrowed from http://json.org/json2.js
11   if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
12    .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
13    .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
14 
15    // Try to use the native JSON parser first
16    return window.JSON && window.JSON.parse ?
17     window.JSON.parse( data ) :
18     (new Function("return " + data))();
19 
20   } else {
21    jQuery.error( "Invalid JSON: " + data );
22   }
23  }

 

所以,以后请使用parseJSON代替eval。

目录
相关文章
|
16天前
|
监控 安全 JavaScript
eval函数的基础用法
【4月更文挑战第7天】`eval`函数在Python中用于执行字符串形式的表达式,但可能导致安全问题,特别是在处理用户输入时。为了避免风险,可以限制输入范围、避免动态构建代码,或使用`ast.literal_eval`评估字面量。当必须使用`eval`时,可以考虑提供自定义命名空间、使用白名单限制函数和操作符,甚至创建沙箱环境。同时,代码审查和实时监控也是保障安全的关键。在安全性和性能之间寻找平衡是使用`eval`时的重要考量。
36 2
|
9月前
|
JavaScript 前端开发 安全
什么是eval()?eval是用来干什么的?
eval() 是 JavaScript 中的一个全局函数,用于解析并执行传递给它的字符串作为 JavaScript 代码。
139 0
|
9月前
python--内置方法eval、zip、enumerate
python--内置方法eval、zip、enumerate
|
9月前
|
前端开发 JavaScript
前端eval的使用
前端eval的使用
57 0
|
9月前
报错AttributeError: Can‘t pickle local object ‘Worker.__init__.<locals>.<lambda>‘解决办法
报错AttributeError: Can‘t pickle local object ‘Worker.__init__.<locals>.<lambda>‘解决办法
232 0
解决使用eval函数出现name ‘XXX‘ is not defined问题
解决使用eval函数出现name ‘XXX‘ is not defined问题
|
TensorFlow 算法框架/工具
解决TypeError: tf__update_state() got an unexpected keyword argument ‘sample_weight‘
解决TypeError: tf__update_state() got an unexpected keyword argument ‘sample_weight‘
230 0
解决TypeError: tf__update_state() got an unexpected keyword argument ‘sample_weight‘
|
缓存 Java Go
自带的 print 函数居然会报错?(下)
最近用 Python 写了几个简单的脚本来处理一些数据,因为只是简单功能所以我就直接使用 print 来打印日志。
|
Shell Python
初学Python之eval函数的嵌套eval中的eval
今天老师布置了一个作业,很简单的几行代码。但是也算让我彻底知道了Python中的eval这个函数了,因为之前学过一点Python,以为自己已经知道了eval函数的用法(还以为这是用来自动识别输入类型,可以用来输入字典) 结果啪啪打脸了。呜呜呜。。。
184 0
成功解决model_selection\_search.py:584: DeprecationWarning: "fit_params" as a constructor argument was d
成功解决model_selection\_search.py:584: DeprecationWarning: "fit_params" as a constructor argument was d

热门文章

最新文章