JSONज़्यादा सुरक्षा की नीति

आपको 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

नीति का अंदरूनी नाम. name एट्रिब्यूट की वैल्यू में अक्षर, संख्याएं, स्पेस, हाइफ़न, अंडरस्कोर, और फ़ुल स्टॉप का इस्तेमाल किया जा सकता है. इस वैल्यू में 255 से ज़्यादा वर्ण नहीं हो सकते.

इसके अलावा, मैनेजमेंट एलिमेंट के यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में, नीति एलिमेंट को किसी अलग नाम से इस्तेमाल करने के लिए, <DisplayName> एलिमेंट का इस्तेमाल किया जा सकता है.

लागू नहीं ज़रूरी है
continueOnError

false के लिए सेट करें, ताकि नीति के काम न करने पर गड़बड़ी दिखाई दे. ज़्यादातर नीतियों के लिए इस तरीके का इस्तेमाल किया जाना चाहिए.

true के लिए फ़्लो सेट करें, ताकि नीति लागू न होने पर भी फ़्लो जारी रखा जा सके.

गलत ज़रूरी नहीं
enabled

नीति लागू करने के लिए, true पर सेट करें.

false पर नीति बंद करें पर सेट करें. यह नीति किसी फ़्लो से जुड़ी होने के बावजूद लागू नहीं होगी.

सही ज़रूरी नहीं
async

इस एट्रिब्यूट के इस्तेमाल पर रोक लगा दी गई है.

गलत बहिष्कृत

<DisplayName> एलिमेंट

मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में, नीति को लेबल करने के लिए name एट्रिब्यूट के साथ-साथ इस्तेमाल करें. यह आम तौर पर इस्तेमाल किए जाने वाले भाषा के नाम से मेल खाता है.

<DisplayName>Policy Display Name</DisplayName>
डिफ़ॉल्ट

लागू नहीं

इस एलिमेंट को छोड़ने पर, नीति की name एट्रिब्यूट की वैल्यू का इस्तेमाल किया जाता है.

मौजूदगी ज़रूरी नहीं
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 ऑब्जेक्ट होता है.
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>

स्कीमा

इस्तेमाल की जानकारी

एक्सएमएल पर आधारित सेवाओं की तरह, JavaScript ऑब्जेक्ट नोटेशन (JSON) के साथ काम करने वाले एपीआई पर भी, कॉन्टेंट लेवल के हमलों का जोखिम हो सकता है. JSON के आसान हमलों से, JSON पार्सर का ज़्यादा इस्तेमाल होता है. इससे, किसी सेवा को क्रैश कराने और ऐप्लिकेशन के लेवल पर सेवा में रुकावट आने का खतरा रहता है. सभी सेटिंग ज़रूरी नहीं हैं. इन्हें सेटिंग से जुड़े जोखिम की आशंकाओं से बचाने के लिए ज़रूरी है.

मिलते-जुलते विषय

JSONtoXML नीति

XMLरेटप्रोटेशन से जुड़ी नीति

रेगुलर एक्सप्रेशन प्रोटेक्शन से जुड़ी नीति