2015-06-26 5 views
12

मेरे पास एक एमवीसी.नेट 4 वेब सर्वर है जो अनुरोध डेटा के रूप में JSON स्वरूपित स्ट्रिंग के साथ HTTP POST अनुरोध स्वीकार करता है। मैं जेएसओएन स्ट्रिंग पर कुछ रेगेक्स द्वारा अनुरोध को अवरुद्ध करने के लिए अनुरोध सर्वर से हिट करने से पहले आईआईएस स्तर में एक नियम जोड़ना चाहता हूं। क्या यह संभव है?जेएसओएन पेलोड फ़ील्ड द्वारा आईआईएस 8 ब्लॉक अनुरोध

+0

** उस JSON स्ट्रिंग पर कुछ रेगेक्स द्वारा अनुरोध को अवरुद्ध करने के लिए ** कृपया बताएं कि इसका क्या अर्थ है ... –

+0

@DaveAlperovich अनुरोध में एक JSON स्वरूपित स्ट्रिंग बॉडी है। इसलिए यदि वह स्ट्रिंग कुछ रेगेक्स से अनुरोध को रद्द कर देती है, वैसे ही आप क्वेरी यूआरएल को रेगेक्स – Orr

+0

से मेल कर सकते हैं क्या आप ओविन का उपयोग कर रहे हैं? या आप HttpAplication.BeginRequest इवेंट का उपयोग कर सकते हैं? क्या आप कृपया विस्तार से बता सकते हैं कि आईआईएस स्तर पर क्यों होना चाहिए? – milanio

उत्तर

2

मैं बनाने और एक कस्टम Http Module आपकी समस्या का समाधान कर सकते हैं जोड़ने लगता है कि देखते हैं। BeginRequest और EndRequest घटनाओं के जवाब में प्रत्येक अनुरोध पर एक HTTP मॉड्यूल कहा जाता है।

+0

धन्यवाद - मैं वास्तव में आईआईएस स्तर पर इसे अवरुद्ध करने का एक तरीका ढूंढ रहा हूं, न कि वेब सर्वर। क्या BeginRequest घटना करता है? – Orr

+0

जब आप आईआईएस स्तर कहते हैं .. क्या आपका मतलब केवल एक विशिष्ट वेबसाइट के लिए अवरुद्ध करना है? –

+0

http://www.iis.net/configreference/system.webserver/modules या का उपयोग करें http://www.iis.net/learn/extensions/url-rewrite-module/request-blocking-rule-template –

5

जब से तुम ने कहा:

मैं इसे वेब सर्वर स्तर प्रत्येक अनुरोध के लिए एक और धागा बनाने के लिए की आवश्यकता होगी, के और अधिक लोड शून्य करने के लिए आईआईएस स्तर में होना चाहता हूँ।

: कारण मैं कुछ अनुरोध को ब्लॉक करना चाहते है कि वे के लिए प्रासंगिक मेरे ऐप अब और उच्च लोड में आते हैं और मैं उन्हें ग्राहकों ओर

से नहीं रोक सकता नहीं हैं, आप 2 विकल्प हैं

  1. अनुरोध छनन
  2. URL पुनर्लेखन

कृपया kno करने के लिए सावधानी से अध्ययन IIS 7.0 Request Filtering and URL Rewriting लेख उनके बारे में सबसे महत्वपूर्ण चीजें हैं। यदि आपका चयन सर्वोच्च प्राथमिकता वाला पहला होगा, तो <denyQueryStringSequences> उपयोगी होगा जहां इसमें कुछ फ़िल्टरिंग आवश्यकताएं शामिल होंगी। और regex के साथ काम करने के लिए, आपको दूसरे का उपयोग करने की आवश्यकता है। निम्न नमूना नियम <rewrite> के तहत अनुरोध पर कार्रवाई करने से रोक सकते हैं:

<rule name="Block Bad Request Strings" stopProcessing="true"> 
    <match url=".*" /> 
    <conditions logicalGrouping="MatchAny" trackAllCaptures="false"> 
      <add input="{QUERY_STRING}" pattern="id=([^\"]*[^-]?>)|(?:[^\\w\\s]\\s*\\\/>)|(?:>\") /> 
    </conditions> 
    <action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="You do not have permission" /> 
</rule> 

अधिक जानकारी के लिए URL Rewrite Module Configuration Reference

संबंधित मुद्दे