1.Jsonの概要
JSONは、テキスト情報を格納および交換するための文法であり、軽量のテキストデータ交換形式です。xmlに似ていますが、JSONはXMLよりも小さく、高速で、解析が簡単です。そのため、インターフェイスデータの送信はjsonモードで実行されます。JSONテキストのMIMEタイプは「application / json」です。
json構文
- データは名前と値のペアになっています
- データはコンマで区切られます
- 中括弧はオブジェクトを保存します
- ブラケットは配列を保存します
JSON値
JSON値は次のようになります。
- 数値(整数または浮動小数点){"年齢":30}
- 文字列(二重引用符で囲みます){"uname": "yang"}
- 論理値(trueまたはfalse){"flag":true}
- 配列(角括弧内){"sites":[{"name": "yang"}、{"name": "ming"}]}
- オブジェクト(中括弧内)JSONオブジェクトは中括弧({})で記述されます。
- null {"runoob":null}
Json-デモ:
-
{{
-
「ユーザー」
:{
-
「ユーザー」
:[
-
{{
-
"id"
:"1"、
-
"ユーザー名"
:"管理者"、
-
"passwd"
:"admin888"
-
}、
-
{{
-
"id"
:"2"、
-
"ユーザー名"
:"root"、
-
"passwd"
:"root123"
-
}、
-
{{
-
"id"
:"3"、
-
"ユーザー名"
:"システム"、
-
"passwd"
:"system456"
-
}
-
]
-
}
-
}
2、JSONインジェクション
データ表現が異なることを除いて、xmlインジェクションと同じです。
-
<?php
-
header('content-type:text / html; charset = utf-8');
-
if
(isset($ _POST [ 'json' ])){
-
$ json_str = $ _ POST [ 'json' ];
-
$ json = json_decode($ json_str);
-
if
(!$ json){
-
die
('JSONドキュメントの形式が間違っています。確認してください');
-
}
-
$ username = $ json-> username;
-
// $ passwd = $ json-> passwd;
-
-
$ mysqli = new mysqli();
-
$ mysqli-> connect('localhost'、'root'、'root');
-
if
($ mysqli-> connect_errno){
-
die
('データベース接続に失敗しました:'。$ mysqli-> connect_error);
-
}
-
$ mysqli-> select_db('user');
-
if
($ mysqli-> errno){
-
dir('データベースを開くことができませんでした:'。$ mysqli-> error);
-
}
-
$ mysqli-> set_charset('utf-8');
-
$ sql = "SELECT username、paawd FROM users WHERE username = '{$ username}'" ;
-
$ result = $ mysqli-> query($ sql);
-
if
(!$ result){
-
die
('SQLステートメントの実行に失敗しました:'。$ mysqli-> error);
-
} else if($ result-> num_rows == 0){
-
die
('クエリ結果は空です');
-
} else {
-
$ array1 = $ result-> fetch_all(MYSQLI_ASSOC);
-
echo
"ユーザー名:{$ array1 [0] ['username']}、パスワード:{$ array1 [0] ['paawd']}"
;
-
}
-
$ result-> free();
-
$ mysqli-> close();
-
}
-
?>
SQLインジェクションと同様に、インジェクションステートメントを挿入します。ただし、注意すべき点の1つは、二重引用符、中括弧など、jsonステートメントをエスケープすることです。