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