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 |
नीति का अंदरूनी नाम. इसके अलावा, मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में नीति को आम भाषा में अलग नाम से लेबल करने के लिए, |
लागू नहीं | ज़रूरी है |
continueOnError |
इस नीति को किसी नीति के काम न करने पर भी फ़्लो एक्ज़ीक्यूट करने की प्रोसेस को जारी रखने के लिए, |
false | ज़रूरी नहीं |
enabled |
नीति लागू करने के लिए, नीति को बंद करने के लिए, |
सही | ज़रूरी नहीं |
async |
यह एट्रिब्यूट अब काम नहीं करता. |
false | बहिष्कृत |
<DisplayName> एलिमेंट
मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में, आम भाषा के अलग नाम से नीति को लेबल करने के लिए, name
एट्रिब्यूट का इस्तेमाल करें.
<DisplayName>Policy Display Name</DisplayName>
डिफ़ॉल्ट |
लागू नहीं अगर इस एलिमेंट को छोड़ दिया जाता है, तो नीति के |
---|---|
मौजूदगी | ज़रूरी नहीं |
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 ऑब्जेक्ट शामिल हो. | build |
steps.jsonthreatprotection.SourceUnavailable |
500 |
यह गड़बड़ी तब होती है, जब <Source> एलिमेंट में दिया गया message वैरिएबल, इनमें से कोई एक हो:
|
build |
steps.jsonthreatprotection.NonMessageVariable |
500 |
यह गड़बड़ी तब होती है, जब <Source> एलिमेंट ऐसे वैरिएबल पर सेट हो जो
message टाइप का न हो.
|
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 पार्सर को बहुत ज़्यादा परेशान करते हैं. साथ ही, ऐप्लिकेशन लेवल पर सेवा में रुकावट के हमले पैदा करते हैं. सभी सेटिंग ज़रूरी नहीं हैं. इसलिए, अपनी सेवा से जुड़ी ज़रूरी शर्तों को संभावित जोखिम से ऑप्टिमाइज़ करने के लिए, हमें इस बात का ध्यान रखना चाहिए.