php [php:escape json_encode()] #php #js

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php [php:escape json_encode()] #php #js相关的知识,希望对你有一定的参考价值。

// 配列やオブジェクトなどのデータをJavaScriptに直接渡すときは、json_eocode()したものをそのままechoする
echo json_encode($data);

// このとき、悪意のコードの実行を防ぐためにjson_encode()のエスケープオプションを指定することでエスケープ可能
echo json_encode($array, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT);

// クラスメソッドにしてみる
class Protect {  
  /**
   * json_h
   * json_encode with Escape
   * @param mix $source
   * @return str json-string
   */
  static public function json_h($source,$option = JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT){
    return json_encode($source,$option);
  }
}

// Protectクラス json_h() テスト
$Protect = new Protect();

class Item {
  public $properties = ['name','price'];
}

$Item = new Item();
$name = 'item1';
$price = '1000';
$mail = 'unaristocratic@forwardal.org';
$msg = "<script>alert('xss is here!!');</script>";

$json = $Protect::json_h(compact($Item->properties,'mail','msg'));

var_dump($json);

以上是关于php [php:escape json_encode()] #php #js的主要内容,如果未能解决你的问题,请参考以下文章