JSONThreatProtection ์ •์ฑ…

์ด ํŽ˜์ด์ง€๋Š” Apigee ๋ฐ Apigee Hybrid์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

Apigee Edge ๋ฌธ์„œ ๋ณด๊ธฐ

์ •์ฑ… ์•„์ด์ฝ˜

๋Œ€์ƒ

๋ฐฐ์—ด๊ณผ ๋ฌธ์ž์—ด ๊ฐ™์€ ๋‹ค์–‘ํ•œ JSON ๊ตฌ์กฐ์— ์ œํ•œ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ์œผ๋กœ์จ ์ฝ˜ํ…์ธ  ์ˆ˜์ค€ ๊ณต๊ฒฉ์— ๋”ฐ๋ฅธ ์œ„ํ—˜์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ •์ฑ…์€ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์ •์ฑ…์ด๋ฉฐ, ์ด ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๋ฉด Apigee ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋น„์šฉ ๋˜๋Š” ์‚ฌ์šฉ๋ฅ ์ด ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •์ฑ… ์œ ํ˜• ๋ฐ ์‚ฌ์šฉ ์˜ํ–ฅ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ •์ฑ… ์œ ํ˜•์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋™์˜์ƒ: JSONThreatProtection ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ˜ํ…์ธ  ์ˆ˜์ค€ ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ API๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ์งง์€ ๋™์˜์ƒ์„ ํ™•์ธํ•˜์„ธ์š”.

๋™์˜์ƒ: Apigee ๊ต์ฐจ ํด๋ผ์šฐ๋“œ API ๊ด€๋ฆฌ ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์ด ์งง์€ ๋™์˜์ƒ์„ ํ™•์ธํ•˜์„ธ์š”.

์š”์†Œ ์ฐธ์กฐ

์š”์†Œ ์ฐธ์กฐ๋Š” JSONThreatProtection ์ •์ฑ…์˜ ์š”์†Œ ๋ฐ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
   <DisplayName>JSONThreatProtection 1</DisplayName>
   <ArrayElementCount>20</ArrayElementCount>
   <ContainerDepth>10</ContainerDepth>
   <ObjectEntryCount>15</ObjectEntryCount>
   <ObjectEntryNameLength>50</ObjectEntryNameLength>
   <Source>request</Source>
   <StringValueLength>500</StringValueLength>
</JSONThreatProtection>

<JSONThreatProtection> ์†์„ฑ

<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> 

๋‹ค์Œ ํ‘œ๋Š” ๋ชจ๋“  ์ •์ฑ… ์ƒ์œ„ ์š”์†Œ์˜ ๊ณตํ†ต ์†์„ฑ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช… ๊ธฐ๋ณธ๊ฐ’ Presence
name

์ •์ฑ…์˜ ๋‚ด๋ถ€ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. name ์†์„ฑ์˜ ๊ฐ’์—๋Š” ๋ฌธ์ž, ์ˆซ์ž, ๊ณต๋ฐฑ, ํ•˜์ดํ”ˆ, ๋ฐ‘์ค„, ๋งˆ์นจํ‘œ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ 255์ž(์˜๋ฌธ ๊ธฐ์ค€)๋ฅผ ์ดˆ๊ณผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์›ํ•˜๋Š” ๊ฒฝ์šฐ <DisplayName> ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌ UI ํ”„๋ก์‹œ ํŽธ์ง‘๊ธฐ์˜ ์ •์ฑ…์— ๋‹ค๋ฅธ ์ž์—ฐ์–ด ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •์ฑ…์— ๋ผ๋ฒจ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ์‚ฌํ•ญ ์—†์Œ ํ•„์ˆ˜
continueOnError

์ •์ฑ…์ด ์‹คํŒจํ•  ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐ˜ํ™˜๋˜๋„๋ก ํ•˜๋ ค๋ฉด false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ •์ฑ…์—์„œ ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘์ž…๋‹ˆ๋‹ค.

์ •์ฑ…์ด ์‹คํŒจํ•ด๋„ ํ๋ฆ„ ์‹คํ–‰์ด ๊ณ„์†๋˜๋„๋ก ํ•˜๋ ค๋ฉด true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ฐธ์กฐ:

false ์„ ํƒ์‚ฌํ•ญ
enabled

์ •์ฑ…์„ ์‹œํ–‰ํ•˜๋ ค๋ฉด true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ •์ฑ…์„ ์ค‘์ง€ํ•˜๋ ค๋ฉด false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ •์ฑ…์ด ํ๋ฆ„์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด๋„ ์ •์ฑ…์ด ์‹œํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

true ์„ ํƒ์‚ฌํ•ญ
async

์ด ์†์„ฑ์€ ์ง€์›์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

false ์ง€์› ์ค‘๋‹จ๋จ

<DisplayName> ์š”์†Œ

name ์†์„ฑ ์™ธ์—๋„ ์ด ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌ UI ํ”„๋ก์‹œ ํŽธ์ง‘๊ธฐ์˜ ์ •์ฑ…์— ๋‹ค๋ฅธ ์ž์—ฐ์–ด ์ด๋ฆ„์œผ๋กœ ๋ผ๋ฒจ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

<DisplayName>Policy Display Name</DisplayName>
๊ธฐ๋ณธ๊ฐ’

ํ•ด๋‹น ์‚ฌํ•ญ ์—†์Œ

์ด ์š”์†Œ๋ฅผ ์ƒ๋žตํ•˜๋ฉด ์ •์ฑ… name ์†์„ฑ ๊ฐ’์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Presence ์„ ํƒ์‚ฌํ•ญ
์œ ํ˜• ๋ฌธ์ž์—ด

<ArrayElementCount> ์š”์†Œ

๋ฐฐ์—ด์—์„œ ํ—ˆ์šฉ๋˜๋Š” ์ตœ๋Œ€ ์š”์†Œ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

<ArrayElementCount>20</ArrayElementCount>
๊ธฐ๋ณธ๊ฐ’: ์ด ์š”์†Œ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์Œ์˜ ์ •์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋ฉด ์‹œ์Šคํ…œ์—์„œ ํ•œ๋„๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Presence: ์„ ํƒ์‚ฌํ•ญ
์œ ํ˜•: ์ •์ˆ˜

<ContainerDepth> ์š”์†Œ

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ์ฒด ๋˜๋Š” ๋ฐฐ์—ด์ธ ์ตœ๋Œ€ ํ—ˆ์šฉ ํฌํ•จ ๊นŠ์ด๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐ์ฒด๊ฐ€ ํฌํ•จ๋œ ๋ฐฐ์—ด์€ ํฌํ•จ ๊นŠ์ด๊ฐ€ 3์ž…๋‹ˆ๋‹ค.

<ContainerDepth>10</ContainerDepth>
๊ธฐ๋ณธ๊ฐ’: ์ด ์š”์†Œ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์Œ์˜ ์ •์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋ฉด ์‹œ์Šคํ…œ์—์„œ ํ•œ๋„๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Presence: ์„ ํƒ์‚ฌํ•ญ
์œ ํ˜•: ์ •์ˆ˜

<ObjectEntryCount> ์š”์†Œ

๊ฐ์ฒด์—์„œ ํ—ˆ์šฉ๋˜๋Š” ์ตœ๋Œ€ ํ•ญ๋ชฉ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

<ObjectEntryCount>15</ObjectEntryCount>
๊ธฐ๋ณธ๊ฐ’: ์ด ์š”์†Œ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์Œ์˜ ์ •์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋ฉด ์‹œ์Šคํ…œ์—์„œ ํ•œ๋„๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Presence: ์„ ํƒ์‚ฌํ•ญ
์œ ํ˜•: ์ •์ˆ˜

<ObjectEntryNameLength> ์š”์†Œ

๊ฐ์ฒด ๋‚ด์—์„œ ์†์„ฑ ์ด๋ฆ„์— ํ—ˆ์šฉ๋˜๋Š” ์ตœ๋Œ€ ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

<ObjectEntryNameLength>50</ObjectEntryNameLength>
๊ธฐ๋ณธ๊ฐ’: ์ด ์š”์†Œ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์Œ์˜ ์ •์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋ฉด ์‹œ์Šคํ…œ์—์„œ ํ•œ๋„๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Presence: ์„ ํƒ์‚ฌํ•ญ
์œ ํ˜•: ์ •์ˆ˜

<Source> ์š”์†Œ

JSON ํŽ˜์ด๋กœ๋“œ ๊ณต๊ฒฉ์— ๋Œ€ํ•ด ํ•„ํ„ฐ๋งํ•  ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์•ฑ์—์„œ ์ธ๋ฐ”์šด๋“œ ์š”์ฒญ์„ ๊ฒ€์ฆํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์ด ์š”์†Œ๋Š” request๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ์ด ์š”์†Œ๋Š” message๋กœ ์„ค์ •ํ•˜๋ฉด ์š”์ฒญ ํ๋ฆ„์— ์—ฐ๊ฒฐ๋  ๋•Œ ์ž๋™์œผ๋กœ ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ํ‰๊ฐ€ํ•˜๊ณ  ์‘๋‹ต ํ๋ฆ„์— ์—ฐ๊ฒฐ๋  ๋•Œ ์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฅผ ์ž๋™์œผ๋กœ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

<Source>request</Source>
๊ธฐ๋ณธ๊ฐ’: ์š”์ฒญ
Presence: ์„ ํƒ์‚ฌํ•ญ
์œ ํ˜•:

๋ฌธ์ž์—ด.

์œ ํšจํ•œ ๊ฐ’: ์š”์ฒญ, ์‘๋‹ต ๋˜๋Š” ๋ฉ”์‹œ์ง€.

<StringValueLength> ์š”์†Œ

๋ฌธ์ž์—ด ๊ฐ’์— ํ—ˆ์šฉ๋˜๋Š” ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

<StringValueLength>500</StringValueLength>
๊ธฐ๋ณธ๊ฐ’: ์ด ์š”์†Œ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์Œ์˜ ์ •์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋ฉด ์‹œ์Šคํ…œ์—์„œ ํ•œ๋„๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Presence: ์„ ํƒ์‚ฌํ•ญ
์œ ํ˜•: ์ •์ˆ˜

์˜ค๋ฅ˜ ์ฐธ์กฐ

์ด ์„น์…˜์—์„œ๋Š” ๋ฐ˜ํ™˜๋˜๋Š” ์˜ค๋ฅ˜ ์ฝ”๋“œ ๋ฐ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ์ด ์ •์ฑ…์ด ์˜ค๋ฅ˜๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•  ๋•Œ Apigee์—์„œ ์„ค์ •ํ•œ ์˜ค๋ฅ˜ ๋ณ€์ˆ˜๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์˜ค๋ฅ˜ ๊ทœ์น™์„ ๊ฐœ๋ฐœ ์ค‘์ธ ๊ฒฝ์šฐ, ์ด ์ •๋ณด๋Š” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ •์ฑ… ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•  ์‚ฌํ•ญ ๋ฐ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜

์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋Š” ์ •์ฑ…์ด ์‹คํ–‰๋  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ์ฝ”๋“œ HTTP ์ƒํƒœ ์›์ธ ์ˆ˜์ •
steps.jsonthreatprotection.ExecutionFailed 500 JSONThreatProtection ์ •์ฑ…์œผ๋กœ ์ธํ•ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์œ ํ˜•์˜ ExecutionFailed ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜์˜ ๋Œ€๋ถ€๋ถ„์€ ์ •์ฑ…์— ์„ค์ •๋œ ํŠน์ • ์ž„๊ณ„๊ฐ’์„ ์ดˆ๊ณผํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์˜ค๋ฅ˜์—๋Š” ๊ฐ์ฒด ํ•ญ๋ชฉ ์ด๋ฆ„ ๊ธธ์ด, ๊ฐ์ฒด ํ•ญ๋ชฉ ์ˆ˜, ๋ฐฐ์—ด ์š”์†Œ ์ˆ˜, ์ปจํ…Œ์ด๋„ˆ ๊นŠ์ด, ๋ฌธ์ž์—ด ๋ฌธ์ž์—ด ๊ฐ’ ๊ธธ์ด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ค๋ฅ˜๋Š” ํŽ˜์ด๋กœ๋“œ์— ์ž˜๋ชป๋œ JSON ๊ฐ์ฒด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์„ ๋•Œ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
steps.jsonthreatprotection.SourceUnavailable 500 ์ด ์˜ค๋ฅ˜๋Š” <Source> ์š”์†Œ์— ์ง€์ •๋œ ๋ฉ”์‹œ์ง€ ๋ณ€์ˆ˜๊ฐ€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์ผ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฒฝ์šฐ(์ •์ฑ…์ด ์‹คํ–‰ ์ค‘์ธ ํŠน์ • ํ๋ฆ„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ)
  • ์œ ํšจํ•œ ๊ฐ’ request, response ๋˜๋Š” message ์ค‘ ํ•˜๋‚˜๊ฐ€ ์•„๋‹˜
steps.jsonthreatprotection.NonMessageVariable 500 ์ด ์˜ค๋ฅ˜๋Š” <Source> ์š”์†Œ๊ฐ€ ๋ฉ”์‹œ์ง€ ์œ ํ˜•์ด ์•„๋‹Œ ๋ณ€์ˆ˜๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌ ์˜ค๋ฅ˜

์—†์Œ.

์˜ค๋ฅ˜ ๋ณ€์ˆ˜

์ด๋Ÿฌํ•œ ๋ณ€์ˆ˜๋Š” ์ด ์ •์ฑ…์œผ๋กœ ์˜ค๋ฅ˜๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋  ๋•Œ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ •์ฑ… ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•  ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ณ€์ˆ˜ ์žฅ์†Œ ์˜ˆ
fault.name="fault_name" fault_name์€ ์œ„์˜ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜ ํ‘œ์— ๋‚˜์—ด๋œ ์˜ค๋ฅ˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ์ด๋ฆ„์€ ์˜ค๋ฅ˜ ์ฝ”๋“œ์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. fault.name Matches "SourceUnavailable"
jsonattack.policy_name.failed policy_name์€ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ์ •์ฑ…์˜ ์‚ฌ์šฉ์ž ์ง€์ • ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. jsonattack.JTP-SecureRequest.failed = true

์˜ค๋ฅ˜ ์‘๋‹ต ์˜ˆ์‹œ

{
  "fault": {
    "faultstring": "JSONThreatProtection[JPT-SecureRequest]: Execution failed. reason: JSONThreatProtection[JTP-SecureRequest]: Exceeded object entry name length at line 2",
    "detail": {
      "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
    }
  }
}

์˜ค๋ฅ˜ ๊ทœ์น™ ์˜ˆ์‹œ

<FaultRule name="JSONThreatProtection Policy Faults">
    <Step>
        <Name>AM-CustomErrorResponse</Name>
        <Condition>(fault.name Matches "ExecutionFailed") </Condition>
    </Step>
    <Condition>(jsonattack.JPT-SecureRequest.failed = true) </Condition>
</FaultRule>

์Šคํ‚ค๋งˆ

์‚ฌ์šฉ ์ฐธ๊ณ ์‚ฌํ•ญ

XML ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ JSON(JavaScript Object Notation)์„ ์ง€์›ํ•˜๋Š” API๋Š” ์ฝ˜ํ…์ธ  ๋“ฑ๊ธ‰ ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ JSON ๊ณต๊ฒฉ์€ JSON ํŒŒ์„œ์— ๋ถ€๋‹ด์„ ์ฃผ์–ด ์„œ๋น„์Šค๋ฅผ ๋น„์ •์ƒ ์ข…๋ฃŒํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€์˜ ์„œ๋น„์Šค ๊ฑฐ๋ถ€ ๊ณต๊ฒฉ์„ ์œ ๋„ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์„ค์ •์€ ์„ ํƒ์‚ฌํ•ญ์ด๋ฉฐ ์ž ์žฌ์  ์ทจ์•ฝ์ ์— ๋งž๊ฒŒ ์„œ๋น„์Šค ์š”๊ตฌ์‚ฌํ•ญ์„ ์ตœ์ ํ™”ํ•˜๋„๋ก ๋ฏธ์„ธ ์กฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ ์ฃผ์ œ

JSONtoXML ์ •์ฑ…

XMLThreatProtection ์ •์ฑ…

RegularExpressionProtection ์ •์ฑ