[Day28]- 新手的Web系列JSON Injection 0x1

Day28- 新手的Web系列JSON Injection 0x1

正文

JSON 介绍

  • JSON 为一种轻量级的资料交换格式
  • 用於浏览器与服务器之间的资料交换,例如:google使用JSON回叫扩展web上的服务
    • 回叫法
      • callback
      • 透过Ajax技术处理JSON资料
  • JSON 以 HTTP 的方式供外部网路来作连结,以浏览器打开,JSON资料相当於一个HTML页面
  • 如果是使用程序或工具请求JSON资料,JSON就只是作为档案资料交换使用

JSON 基础

  • JSON(Javascript Object Notation)
  • JSON是储存和交换文本档案资料的一种语法
  • JSON是Javascript的子集
  • 格式 = 名称:值
  • 例如:
    • "name":"value"
  • 值的资料类型:
    • 数字(整数或浮点数)
    • 字串符号
    • 逻辑值(true/false)
    • 阵列([])
    • 物件({})
    • null
  • JSON基於两种资料结构类型:
    • 阵列
    • 物件建构
  • JSON 物件:
var json = {"name":"neko","password":"2250"};
document.writeln(jason.name);
document.writeln(jason.password);
  • JSON 阵列
var json =[
{"name":"neko","password":"2250"},
{"name":"mew","password":"5022"}
];
// 物件阵列中第一项
json[0].name;
// 回传的值
neko
  • 巢状
var student = {
// cin是jason的第一个阵列 
"cin":[
// 第一个元素
{"name":"neko","age":18},
// 第二个元素
{"name":"momo","age":20}
],
// csie是jason的第二个阵列 
"csie":[
// 第一个元素
{"name":"robot","age":22},
// 第二个元素
{"name":"popo","age",19}
]
}
  • 上面程序中,student是一个物件
  • 两个属性
    • cin
      • 有两个jaso物件的阵列
    • csie
      • 有两个jaso物件的阵列
  • 连结资料的方法:
    • document.writeln(student.cin[0].name +' '+ student.cin[0].age)
    • 输出:
      • neko 18
  • JSON 应用
    • <script> 标签引入JSON档
      • 一个json档:var student = {"name":"neko"}
      • 引入json档:
      <script src="student.json"></script>
      <script>
      alert(student.name);
      alert(student.length);
      </script>
      
    • 透过XMLHttpRequest取得JSON文本档案资料
      • 一个json档:var strdent={"name":"neko"}
      • 透过eval()解析json物件
      // 建立 XMLHttpRequest 物件
      httpRequest = getHttpRequest()
      // get student.json
      var test = eval(httpRequest.responseText)
      alert(test.name);
      

<<:  [Day 29] 还在吵架的 subgrid

>>:  [Day28] 实战 - 波段创新高

LeetCode 双刀流: 26. Remove Duplicates from Sorted Array

26. Remove Duplicates from Sorted Array 「重复」的判断是一...

[Day 08] 使用 fastAPI 部署 YOLOv4 (2/2) — 自行撰写 Client 进行互动

前言 昨天我们使用了 fastAPI 内建 client 的 UI 来与 API 互动,今天我们改为...

LEAP(轻量级可扩展认证协议)

-EAP和802.1X 以下是维基百科的摘录: EAP不是有线协议;相反,它仅定义消息格式。每个使...

成熟度模型中构建安全性 (Building Security In Maturity Model :BSIMM)

CMMI、CMMC、BSIMM 和 SAMM 是评估软件开发能力的好模型。但是BSIMM 是衡量一个...

Day26 指派角色给使用者

昨天角色的 CRUD 功能都完成了,接着就是要把角色指派给使用者了,先建立一个 ViewModel ...