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

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

यह क्या है

यह टूल, कॉन्टेंट लेवल पर होने वाले हमलों के जोखिम को कम करता है. इसके लिए, कई JSON स्ट्रक्चर, जैसे कि ऐरे और स्ट्रिंग के लिए सीमाएं तय की जाती है.

वीडियो: यह जानने के लिए एक छोटा वीडियो देखें कि JSON रुकावटProtection की नीति आपको किस तरह से, एपीआई को कॉन्टेंट-लेवल पर होने वाले हमलों से सुरक्षित रखने में मदद करती है.

वीडियो: Apigee क्रॉस-क्लाउड एपीआई प्लैटफ़ॉर्म पर यह छोटा सा वीडियो देखें.

एलिमेंट का रेफ़रंस

एलिमेंट रेफ़रंस से, JSONThreadProtection की नीति के एलिमेंट और एट्रिब्यूट के बारे में जानकारी मिलती है.

<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>

<JSON][Protection> एट्रिब्यूट

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

इस टेबल में उन एट्रिब्यूट के बारे में बताया गया है जो नीति के सभी पैरंट एलिमेंट के लिए एक जैसे होते हैं:

एट्रिब्यूट ब्यौरा डिफ़ॉल्ट मौजूदगी
name

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

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

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

इस नीति को false पर सेट करें, ताकि नीति के काम न करने पर गड़बड़ी का मैसेज दिखे. ज़्यादातर नीतियों में, ऐसा आम तौर पर किया जाता है.

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

false ज़रूरी नहीं
enabled

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

नीति को बंद करने के लिए, false पर सेट करें. अगर यह नीति किसी फ़्लो से जुड़ी हुई है, तब भी उसे लागू नहीं किया जाएगा.

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

यह एट्रिब्यूट अब काम नहीं करता.

false बहिष्कृत

<DisplayName> एलिमेंट

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

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

लागू नहीं

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

मौजूदगी ज़रूरी नहीं
Type String

<arrayElementCount> एलिमेंट

इससे पता चलता है कि किसी ऐरे में ज़्यादा से ज़्यादा कितने एलिमेंट इस्तेमाल किए जा सकते हैं.

<ArrayElementCount>20</ArrayElementCount>
डिफ़ॉल्ट: अगर इस एलिमेंट के बारे में जानकारी नहीं दी जाती या नेगेटिव पूर्णांक के बारे में बताया जाता है, तो सिस्टम कोई सीमा लागू नहीं करता.
मौजूदगी: ज़रूरी नहीं
टाइप: Integer

<Containerdepth> एलिमेंट

इससे यह पता चलता है कि कंटेनर, ऑब्जेक्ट या अरे ज़्यादा से ज़्यादा कहां तक शामिल हो सकते हैं. उदाहरण के लिए, अगर किसी ऐरे में कोई ऐसा ऑब्जेक्ट होता है जिसमें कोई ऑब्जेक्ट होता है, तो कंटेनमेंट की गहराई 3 होगी.

<ContainerDepth>10</ContainerDepth>
डिफ़ॉल्ट: अगर इस एलिमेंट के बारे में जानकारी नहीं दी जाती या नेगेटिव पूर्णांक के बारे में बताया जाता है, तो सिस्टम कोई सीमा लागू नहीं करता.
मौजूदगी: ज़रूरी नहीं
टाइप: Integer

<ObjectEntryCount> एलिमेंट

इससे पता चलता है कि किसी ऑब्जेक्ट में ज़्यादा से ज़्यादा कितनी एंट्री हो सकती हैं.

<ObjectEntryCount>15</ObjectEntryCount>
डिफ़ॉल्ट: अगर इस एलिमेंट के बारे में जानकारी नहीं दी जाती या नेगेटिव पूर्णांक के बारे में बताया जाता है, तो सिस्टम कोई सीमा लागू नहीं करता.
मौजूदगी: ज़रूरी नहीं
टाइप: Integer

<ObjectEntryNameLength> एलिमेंट

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

<ObjectEntryNameLength>50</ObjectEntryNameLength>
डिफ़ॉल्ट: अगर इस एलिमेंट के बारे में जानकारी नहीं दी जाती या नेगेटिव पूर्णांक के बारे में बताया जाता है, तो सिस्टम कोई सीमा लागू नहीं करता.
मौजूदगी: ज़रूरी नहीं
टाइप: Integer

<सोर्स> एलिमेंट

JSON पेलोड अटैक के लिए, जांच किए जाने वाला मैसेज. आम तौर पर, इसे request पर सेट किया जाता है. ऐसा इसलिए होता है, क्योंकि आम तौर पर आपको क्लाइंट ऐप्लिकेशन से मिलने वाले अनुरोधों की पुष्टि करनी होती है. अगर इस नीति को message पर सेट किया जाता है, तो अनुरोध के फ़्लो के साथ अटैच किए जाने पर, यह एलिमेंट अपने-आप अनुरोध के मैसेज का आकलन करेगा. रिस्पॉन्स फ़्लो के साथ अटैच होने पर, वह रिस्पॉन्स मैसेज भी जांचेगा.

<Source>request</Source>
डिफ़ॉल्ट: CANNOT TRANSLATE
मौजूदगी: ज़रूरी नहीं
टाइप:

स्ट्रिंग.

मान्य वैल्यू: अनुरोध, रिस्पॉन्स या मैसेज.

<StringValueLength> एलिमेंट

इससे किसी स्ट्रिंग की वैल्यू के लिए, ज़्यादा से ज़्यादा लंबाई का पता चलता है.

<StringValueLength>500</StringValueLength>
डिफ़ॉल्ट: अगर इस एलिमेंट के बारे में जानकारी नहीं दी जाती या नेगेटिव पूर्णांक के बारे में बताया जाता है, तो सिस्टम कोई सीमा लागू नहीं करता.
मौजूदगी: ज़रूरी नहीं
टाइप: Integer

गड़बड़ी का रेफ़रंस

यह सेक्शन गड़बड़ी के कोड और दिखाए गए गड़बड़ी के मैसेज के बारे में बताता है. साथ ही, इस नीति के ट्रिगर होने पर Edge की मदद से सेट की गई गड़बड़ी के वैरिएबल के बारे में बताता है. यह जानकारी जानना ज़रूरी है कि क्या गड़बड़ियों को ठीक करने के लिए, गड़बड़ी से जुड़े नियम बनाए जा रहे हैं. ज़्यादा जानने के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपके लिए ज़रूरी जानकारी और गड़बड़ियों को ठीक करने के तरीके देखें.

रनटाइम से जुड़ी गड़बड़ियां

नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.

गड़बड़ी का कोड एचटीटीपी कोड स्थिति वजह समाधान
steps.jsonthreatprotection.ExecutionFailed 500 JSONThreadProtection नीति की मदद से, Exec फ़्रेमो पर असर डालने वाली कई गड़बड़ियां अलग-अलग तरह की हो सकती हैं. इनमें से ज़्यादातर गड़बड़ियां तब होती हैं, जब नीति में सेट किए गए थ्रेशोल्ड को पार कर लिया जाता है. इस तरह की गड़बड़ियां होती हैं: ऑब्जेक्ट एंट्री के नाम की लंबाई, ऑब्जेक्ट एंट्री की संख्या, ऐरे एलिमेंट की संख्या, कंटेनर की गहराई, स्ट्रिंग स्ट्रिंग की वैल्यू की लंबाई. यह गड़बड़ी तब भी होती है, जब पेलोड में अमान्य JSON ऑब्जेक्ट शामिल हो.
steps.jsonthreatprotection.SourceUnavailable 500 यह गड़बड़ी तब होती है, जब <Source> एलिमेंट में दिया गया message वैरिएबल, इनमें से कोई एक हो:
  • दायरे से बाहर है (यह सुविधा उस फ़्लो में उपलब्ध नहीं होती जहां नीति लागू की जा रही है)
  • request, response, या message मान्य वैल्यू में से एक नहीं है
steps.jsonthreatprotection.NonMessageVariable 500 यह गड़बड़ी तब होती है, जब <Source> एलिमेंट ऐसे वैरिएबल पर सेट हो जो message टाइप का न हो.

डिप्लॉयमेंट से जुड़ी गड़बड़ियां

कोई नहीं.

गड़बड़ी वाले वैरिएबल

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

वैरिएबल जगह उदाहरण
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 XMLProtection की नीति

regularExpressionProtection की नीति