आपके प्रश्न का संक्षिप्त उत्तर 'हां' है।
मैं तीन विधियों का उपयोग कर हैकिंग प्रयासों को अवरुद्ध करता हूं।
मैं अपने सभी डेटाबेस प्रश्नों में cfqueryparam का उपयोग करता हूं। मैं url scope चर के लिए टेम्पलेट/cfm फ़ाइलों के शीर्ष पर cfparam का उपयोग करूंगा।
मैं Portcullis या इसके वेरिएंट का इस्तेमाल किया है। आप इसे http://portcullis.riaforge.org/ से प्राप्त कर सकते हैं। पोर्टकुलिस कुछ क्रॉस साइट स्क्रिप्टिंग हमलों के खिलाफ भी बचाव करेगा।
मैं Windows आईआईएस 7.5 (Windows Server 2008 R2) का उपयोग करें। मैं यूआरएल आधारित हमलों के ब्लॉक को अवरुद्ध करने के लिए यूआरएल रिवाइट फीचर का उपयोग करता हूं। आप अपाचे के साथ समान चीजें कर सकते हैं और पुनः लिखने के लिए पुनः लिख सकते हैं। यहाँ मेरी आईआईएस URL पुनर्लेखन नियम हैं:
<?xml version="1.0" encoding="UTF-8"?>
<appcmd>
<CONFIG CONFIG.SECTION="system.webServer/rewrite/globalRules" path="MACHINE/WEBROOT/APPHOST" overrideMode="Inherit" locked="false">
<system.webServer-rewrite-globalRules>
<rule name="SQL Injection - EXEC - SCRIPT_NAME" stopProcessing="true">
<match url="^.*EXEC\s*[\(|%28].*$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
<serverVariables>
</serverVariables>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
<rule name="SQL Injection - EXEC - QS" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{QUERY_STRING}" pattern="^.*EXEC\s*[\(|%28].*$" />
</conditions>
<serverVariables>
</serverVariables>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
<rule name="SQL Injection - CAST - SCRIPT_NAME" stopProcessing="true">
<match url="^.*CAST\s*[\(|%28].*$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
<serverVariables>
</serverVariables>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
<rule name="SQL Injection - CAST - QS" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{QUERY_STRING}" pattern="^.*CAST\s*[\(|%28].*$" />
</conditions>
<serverVariables>
</serverVariables>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
<rule name="SQL Injection - DECLARE - SCRIPT_NAME" stopProcessing="true">
<match url="^.*DECLARE.*$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
<serverVariables>
</serverVariables>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
<rule name="SQL Injection - DECLARE - QS" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{QUERY_STRING}" pattern="^.*DECLARE.*$" />
</conditions>
<serverVariables>
</serverVariables>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
<rule name="SQL Injection - NVARCHAR - SCRIPT_NAME" stopProcessing="true">
<match url="^.*CHAR\s*[\(|%28].*$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
<serverVariables>
</serverVariables>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
<rule name="SQL Injection - NVARCHAR - QS" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{QUERY_STRING}" pattern="^.*CHAR\s*[\(|%28].*$" />
</conditions>
<serverVariables>
</serverVariables>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
<rule name="SQL Injection - sp_password - SCRIPT_NAME" stopProcessing="true">
<match url="^.*sp_password.*$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
<serverVariables>
</serverVariables>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
<rule name="SQL Injection - sp_password - QS" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{QUERY_STRING}" pattern="^.*sp_password.*$" />
</conditions>
<serverVariables>
</serverVariables>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
<rule name="SQL Injection - xp - SCRIPT_NAME" stopProcessing="true">
<match url="^.*%20xp_.*$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
<serverVariables>
</serverVariables>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
<rule name="SQL Injection - xp - QS" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{QUERY_STRING}" pattern="^.*%20xp_.*$" />
</conditions>
<serverVariables>
</serverVariables>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
</system.webServer-rewrite-globalRules>
</CONFIG>
</appcmd>
ये नियम सी में जुड़ जाते हैं: \ Windows \ System32 \ inetsrv \ config \ applicationHost.config आईआईएस के लिए फ़ाइल। हालांकि मैं **** नहीं **** अनुशंसा करता हूं कि आप सीधे इस फ़ाइल को संपादित करें। एक गलती और आईआईएस लोड नहीं होगा। इसके बजाय & कॉपी करें नियम ऊपर पेस्ट करें और उन्हें "iis-global-rewrite.xml" के रूप में सहेजें। फिर अपने आईआईएस सर्वर से नियम जोड़ने के लिए निम्नलिखित बैच फ़ाइल चलाएँ:
C:\Windows\System32\inetsrv\appcmd.exe set config -in < iis-global-rewrite.xml
आईआईएस पुनर्लेखन नियम IIS 7.0 (विंडोज सर्वर 2008) के साथ काम करना चाहिए लेकिन मैं यह परीक्षण नहीं किया।
ये नियम भी web.config फ़ाइल का उपयोग कर एक ही साइट पर लागू किया जा सकता है आप सर्वर तक पहुँच नहीं है, तो।
मैं सुरक्षा के लिए तीन अलग-अलग तरीकों का उपयोग क्यों करूं? क्योंकि उनमें से कोई भी सभी अड्डों को कवर नहीं करता है। आईआईएस पुनर्लेखन नियम केवल यूआरएल आधारित हमलों के खिलाफ सुरक्षा करते हैं। हैकर फॉर्म सबमिशन हमलों का भी उपयोग कर सकते हैं जो एक ही काम करते हैं। मैं सुरक्षा की पहली पंक्ति के रूप में आईआईएस नियमों को प्राथमिकता देता हूं क्योंकि यह PHP, एएसपी इत्यादि सहित सर्वर पर सभी साइटों के साथ काम करेगा। पोर्टकुलिस कोल्डफ्यूजन के लिए रक्षा की एक अच्छी दूसरी पंक्ति है क्योंकि यह फॉर्म आधारित हमलों और कुछ क्रॉस साइट स्क्रिप्टिंग को पकड़ लेगी हमला करता है। रक्षा की आखिरी पंक्ति cfqueryparam/cfparam कोड है जो यूआरएल/फॉर्म आधारित एसक्यूएल इंजेक्शन हमलों के खिलाफ सुरक्षा करता है।
यदि इन तीनों विधियों का उपयोग किया जाता है तो सर्वर/साइट बहुत सुरक्षित होनी चाहिए। मैं समय-समय पर सर्वर लॉग की समीक्षा करने की सलाह दूंगा क्योंकि हमले विकसित होते हैं और सुधार करते हैं।
स्रोत
2012-04-15 02:48:37
वाह, यह बिल्कुल सही है। मैं वास्तव में आईआईएस पर सीएफ चला रहा हूं, इसलिए मैं निश्चित रूप से कुछ और उन्नत पुनर्लेखन नियमों के साथ अपने वेब ऐप को सुरक्षित रखने में देखूंगा। धन्यवाद! – Eleeist
आईआईएस यूआरएल रिवाइट और अपाचे mod_rewrite रक्षा और एसईओ के लिए बहुत उपयोगी उपकरण हैं। http://blogs.iis.net/ruslany/archive/2009/04/08/10-url-rewriting-tips-and-tricks.aspx में आईआईएस यूआरएल रिवाइट के लिए कुछ उपयोगी उदाहरण हैं। –