आपको Apigee Edge दस्तावेज़ दिख रहा है.
Apigee X दस्तावेज़ देखें.

यह क्या है
अलग-अलग JSON स्ट्रक्चर, जैसे कि श्रेणियों और स्ट्रिंग पर सीमाएं तय करने की सुविधा चालू करके, कॉन्टेंट-लेवल पर होने वाले हमलों से होने वाले जोखिम को कम करता है.
पर सेट किया गया होवीडियो: एक छोटा वीडियो देखें. इस बारे में ज़्यादा जानने के लिए कि JSONTSProtection नीति की मदद से, कॉन्टेंट लेवल पर होने वाले हमलों से एपीआई को कैसे सुरक्षित किया जा सकता है.
वीडियो: Apigee क्रॉस-क्लाउड एपीआई प्लैटफ़ॉर्म पर यह छोटा वीडियो देखें.
एलिमेंट का रेफ़रंस
एलिमेंट रेफ़रंस में, JSONDefProtection नीति के एलिमेंट और एट्रिब्यूट के बारे में बताया गया है.
<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>
<JSONSafetyProtect> एट्रिब्यूट
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
इस टेबल में उन एट्रिब्यूट के बारे में बताया गया है जो नीति से जुड़े सभी पैरंट एलिमेंट में मौजूद हैं:
एट्रिब्यूट | जानकारी | डिफ़ॉल्ट | मौजूदगी |
---|---|---|---|
name |
नीति का अंदरूनी नाम. इसके अलावा, मैनेजमेंट एलिमेंट के यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में, नीति एलिमेंट को किसी अलग नाम से इस्तेमाल करने के लिए, |
लागू नहीं | ज़रूरी है |
continueOnError |
|
गलत | ज़रूरी नहीं |
enabled |
नीति लागू करने के लिए,
|
सही | ज़रूरी नहीं |
async |
इस एट्रिब्यूट के इस्तेमाल पर रोक लगा दी गई है. |
गलत | बहिष्कृत |
<DisplayName> एलिमेंट
मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में, नीति को लेबल करने के लिए name
एट्रिब्यूट के साथ-साथ इस्तेमाल करें. यह आम तौर पर इस्तेमाल किए जाने वाले भाषा के नाम से मेल खाता है.
<DisplayName>Policy Display Name</DisplayName>
डिफ़ॉल्ट |
लागू नहीं इस एलिमेंट को छोड़ने पर, नीति की |
---|---|
मौजूदगी | ज़रूरी नहीं |
Type | स्ट्रिंग |
<ArrayElementCount> एलिमेंट
किसी ऐरे में मंज़ूर किए गए एलिमेंट की ज़्यादा से ज़्यादा संख्या तय करता है.
<ArrayElementCount>20</ArrayElementCount>
डिफ़ॉल्ट: | अगर इस एलिमेंट के बारे में नहीं बताया जाता है या नेगेटिव पूरी संख्या दी जाती है, तो सिस्टम इस सीमा को लागू नहीं करता. |
मौजूदगी: | ज़रूरी नहीं |
टाइप: | पूर्णांक |
<Containerdepth> एलिमेंट
ज़्यादा से ज़्यादा अनुमति वाले कंटेनर के बारे में जानकारी देता है, जहां कंटेनर ऑब्जेक्ट या ऐरे होते हैं. उदाहरण के लिए, अगर किसी कैटगरी में कोई ऑब्जेक्ट मौजूद है, तो उसे 3 तक गहराई से शामिल किया जाएगा.
<ContainerDepth>10</ContainerDepth>
डिफ़ॉल्ट: | अगर इस एलिमेंट के बारे में नहीं बताया जाता है या नेगेटिव वैल्यू दी जाती है, तो सिस्टम कोई सीमा लागू नहीं करता. |
मौजूदगी: | ज़रूरी नहीं |
टाइप: | पूर्णांक |
<ObjectEntryCount> एलिमेंट
ऑब्जेक्ट में मंज़ूर की गई एंट्री की ज़्यादा से ज़्यादा संख्या तय करता है.
<ObjectEntryCount>15</ObjectEntryCount>
डिफ़ॉल्ट: | अगर इस एलिमेंट के बारे में नहीं बताया जाता है या नेगेटिव वैल्यू दी जाती है, तो सिस्टम कोई सीमा लागू नहीं करता. |
मौजूदगी: | ज़रूरी नहीं |
टाइप: | पूर्णांक |
<ObjectEntryNameLength> एलिमेंट
यह ऑब्जेक्ट में प्रॉपर्टी के नाम के लिए, स्ट्रिंग की ज़्यादा से ज़्यादा लंबाई को तय करता है.
<ObjectEntryNameLength>50</ObjectEntryNameLength>
डिफ़ॉल्ट: | अगर इस एलिमेंट के बारे में नहीं बताया जाता है या नेगेटिव पूरी संख्या दी जाती है, तो सिस्टम इस सीमा को लागू नहीं करता. |
मौजूदगी: | ज़रूरी नहीं |
टाइप: | पूर्णांक |
<Source> एलिमेंट
JSON पेलोड हमलों के लिए, जांच की जाने वाली मैसेज. आम तौर पर, इसे
request
पर सेट किया जाता है, क्योंकि आम तौर पर आपको क्लाइंट ऐप्लिकेशन से आने वाले अनुरोधों की पुष्टि करनी होगी.
message
पर सेट करने पर, यह एलिमेंट अनुरोध फ़्लो में अटैच किए जाने पर
अनुरोध के मैसेज की अपने-आप जांच करेगा. साथ ही, रिस्पॉन्स फ़्लो में अटैच करने पर,
उस मैसेज का भी आकलन करेगा.
<Source>request</Source>
डिफ़ॉल्ट: | CANNOT TRANSLATE |
मौजूदगी: | ज़रूरी नहीं |
टाइप: |
स्ट्रिंग. मान्य वैल्यू: अनुरोध, जवाब या मैसेज. |
<StringValueLength> एलिमेंट
किसी स्ट्रिंग की वैल्यू के लिए ज़्यादा से ज़्यादा लंबाई बताता है.
<StringValueLength>500</StringValueLength>
डिफ़ॉल्ट: | अगर इस एलिमेंट के बारे में नहीं बताया जाता है या नेगेटिव पूरी संख्या दी जाती है, तो सिस्टम इस सीमा को लागू नहीं करता. |
मौजूदगी: | ज़रूरी नहीं |
टाइप: | पूर्णांक |
गड़बड़ी का रेफ़रंस
पर सेट किया गया हो
इस सेक्शन में उन गड़बड़ी कोड और लौटाए गए गड़बड़ी के मैसेज के बारे में बताया गया है जो गड़बड़ी सेट करते हैं. ये मैसेज तब ट्रिगर होते हैं, जब इस नीति से गड़बड़ी होती है. यह जानकारी होना ज़रूरी है, ताकि यह पता लगाया जा सके कि आप गड़बड़ी ठीक करने के लिए नियम बना रहे हैं या नहीं. ज़्यादा जानने के लिए, नीति से जुड़ी गड़बड़ियों के बारे में ज़रूरी जानकारी और गड़बड़ी ठीक करना देखें.
रनटाइम से जुड़ी गड़बड़ियां
नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.
गड़बड़ी कोड | एचटीटीपी कोड स्थिति | वजह | समाधान |
---|---|---|---|
steps.jsonthreatprotection.ExecutionFailed |
500 | JSONग्रुप सुरक्षा की नीति में, एक्ज़ीक्यूशन से जुड़ी अलग-अलग तरह की कई गड़बड़ियां शामिल हो सकती हैं. इनमें से ज़्यादातर गड़बड़ियां तब होती हैं, जब नीति में सेट किया गया कोई थ्रेशोल्ड तय सीमा से ज़्यादा हो. इस तरह की गड़बड़ियों में ये चीज़ें शामिल होती हैं: ऑब्जेक्ट एंट्री का नाम लंबाई, ऑब्जेक्ट एंट्री की संख्या, ऐरे एलिमेंट की संख्या, कंटेनर की गहराई, स्ट्रिंग स्ट्रिंग की वैल्यू. यह गड़बड़ी तब भी होती है, जब पेलोड में अमान्य JSON ऑब्जेक्ट होता है. | build |
steps.jsonthreatprotection.SourceUnavailable |
500 |
यह गड़बड़ी तब होती है, जब <Source> एलिमेंट में बताया गया मैसेज वैरिएबल, इनमें से कोई एक हो:
|
build |
steps.jsonthreatprotection.NonMessageVariable |
500 |
यह गड़बड़ी तब होती है, जब <Source> एलिमेंट ऐसे वैरिएबल पर सेट किया जाता है जो मैसेज टाइप का नहीं होता.
|
build |
डिप्लॉयमेंट से जुड़ी गड़बड़ियां
कोई नहीं.
गड़बड़ी वाले वैरिएबल
जब इस नीति से गड़बड़ी ट्रिगर होती है, तब ये वैरिएबल सेट होते हैं. ज़्यादा जानकारी के लिए, नीति से जुड़ी गड़बड़ियों के बारे में ज़रूरी जानकारी देखें.
वैरिएबल | जगह | उदाहरण |
---|---|---|
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>
स्कीमा
इस्तेमाल की जानकारी
एक्सएमएल पर आधारित सेवाओं की तरह, JavaScript ऑब्जेक्ट नोटेशन (JSON) के साथ काम करने वाले एपीआई पर भी, कॉन्टेंट लेवल के हमलों का जोखिम हो सकता है. JSON के आसान हमलों से, JSON पार्सर का ज़्यादा इस्तेमाल होता है. इससे, किसी सेवा को क्रैश कराने और ऐप्लिकेशन के लेवल पर सेवा में रुकावट आने का खतरा रहता है. सभी सेटिंग ज़रूरी नहीं हैं. इन्हें सेटिंग से जुड़े जोखिम की आशंकाओं से बचाने के लिए ज़रूरी है.