zoukankan      html  css  js  c++  java
  • 使用parseJSON代替eval

    有些程序员如果没有很好的在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(/"[^"\
    
    ]*"|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。

  • 相关阅读:
    疑问
    linux 7.0+救援模式
    Unity3D手游开发日记(6)
    Unity3D手游开发日记(4)
    Unity3D手游开发日记(5)
    Unity3D手游开发日记(2)
    Unity3D手游开发日记(3)
    Unity3D手游开发日记(1)
    十大最佳Leap Motion体感控制器应用
    unity3d模型不接受光照
  • 原文地址:https://www.cnblogs.com/zhangwei595806165/p/3277526.html
Copyright © 2011-2022 走看看