2010-02-10 18 views
6

में एक प्रतिक्रिया में देरी कैसे करें मेरे पास क्लासिक-एएसपी चलने वाली साइट है और लॉगिन पेज पर मैं खातों पर ब्रूट फोर्स हमलों को रोकने में मदद के लिए असफल लॉगिन प्रयास (10 सेकंड की तरह) की प्रतिक्रिया में देरी करना चाहता हूं ।क्लासिक एएसपी

त्वरित Google खोज SQL सर्वर क्वेरी का उपयोग करके कुछ हैक्स दिखाती है जो हैक-टैस्टिक दिखाई देती है।

क्लासिक एएसपी में ऐसा करने का कोई अच्छा तरीका है?

उत्तर

8

मैं आपके विशिष्ट प्रश्न का उत्तर नहीं दे रहा हूं , जैसा कि कई पहले से ही कर चुके हैं, लेकिन ब्रूट फोर्स हमलों को रोकने के बहुत बेहतर तरीके हैं।

उदाहरण के लिए:

  1. क्यों किसी विशिष्ट सत्र को लॉक नहीं या आईपी बाहर संबोधित करने के बाद 5 (यहाँ उदार किया जा रहा है) विफल लॉगिन प्रयास का कहना है?आप 10 मिनट के लिए इसे लॉक कर सकते हैं। आप एक "401 अनधिकृत" HTTP स्थिति भी लिख सकते हैं और फिर Response.End के साथ प्रतिक्रिया को समाप्त कर सकते हैं।
  2. इसी तरह के फैशन में, लेकिन असफल लॉगिन से भी जुड़ा हुआ नहीं है, तो आप किसी विशेष आईपी, उपयोगकर्ता एजेन्ट और अन्य क्लाइंट सुविधाओं के लिए वाई सेकंड में एक्स बार से अधिक लॉगिन पेज के अनुरोधों को अवरुद्ध कर सकते हैं - एक 'अद्वितीय' क्लाइंट की तरह सुनिश्चित करना ।
  3. आईपी पता अनदेखा करें (यह आसानी से खराब हो गया है और प्रॉक्सी सर्वर आईपी हो सकता है), और बस लॉगिन प्रयास के स्वचालन का पता लगाता है। विशिष्ट उपयोगकर्ता नाम/ईमेल पते के लिए वाई सेकंड के भीतर असफल लॉग इन की एक्स संख्या, उस उपयोगकर्ता नाम के लिए उस समय के लिए ब्लॉक करें, और प्रतिक्रिया समाप्त करें।

बस कुछ संसाधनों को लॉक करके और प्रतीक्षा करके अपने सर्वर पर अनावश्यक भार डालने से अन्य विकल्प हैं।

जाहिर है, हार्डवेयर परत - फ़ायरवॉल आदि पर ऐसा करना पसंदीदा विकल्प होगा।

+0

इंतजार नहीं करेंगे वहाँ निश्चित रूप से अन्य तरीके हैं, आईपी आधारित अवरुद्ध के साथ समस्या यह है कि अक्सर बड़े निगमों पर उपयोगकर्ताओं को एक ही आईपी से आ रही दिखाई देगा, इसलिए एक आईपी आधारित ब्लॉक हो सकता है वांछित से अधिक लोगों को प्रभावित करते हैं। और स्रोत आईपी को इस विधि को प्रतिपादित करने, बस फिक्र किया जा सकता है। –

+0

हां, मुझे उस बर्ट, प्रॉक्सी और उसके बारे में पता है, और इसे भी धोखा दिया जा सकता है। हालांकि, ब्रूट फोर्स अटैक एक विशिष्ट उपयोगकर्ता नाम का भी उपयोग करते हैं, जिसके लिए वे लॉग इन का प्रयास करते हैं, इसलिए एक्स लॉगिन वाई सेकंड के भीतर उपयोगकर्ता 'एडमिन' के लिए प्रयास करता है, बस उन्हें बढ़ोतरी करने के लिए कहें। आईपी ​​या कुछ भी के बावजूद।यह एक ही उपयोगकर्ता नाम के लिए बार-बार लॉगिन प्रयास है जो स्पष्ट रूप से एक स्वचालित वेब अनुरोध है, जो इसकी पहचान करता है। इनमें से कुछ को प्रतिबिंबित करने के लिए मेरे उत्तर को संशोधित किया गया। –

+0

+1, अच्छा जवाब, हालांकि मैं विलंब प्रतिक्रिया समाधान को अस्वीकार करने के लिए मजबूत शर्तों का उपयोग करता हूं। एक समृद्ध सत्र का उपयोग करने के लिए एक क्रूर बल कई बार समानांतर अनुरोधों के साथ किया जा सकता है, इसलिए ऐसा हमला प्रभावी ढंग से एक अनजान डॉस हमला बन सकता है। – AnthonyWJones

1

शुद्ध एएसपी में ऐसा करने का कोई आसान तरीका नहीं है।
या तो SQL WAITFOR, या नींद (या कुछ भी) में सरल ActiveX घटक बनाएँ जो सोता है।
ध्यान दें कि यह सर्वर पर लोड बढ़ाएगा। स्लीपिंग अनुरोध स्मृति और कनेक्शन को कुछ भी नहीं लेते रहते हैं।

0

वहाँ Response.Buffer विकल्प है जिसका उपयोग आप पृष्ठ को प्रसंस्करण पूरा होने तक प्रतिक्रिया को वापस करने में देरी करने के लिए कह सकते हैं, ताकि आप शायद स्क्रिप्ट में किसी प्रकार के टाइमआउट के साथ गठबंधन कर सकें, लेकिन यह नहीं होगा विशेष रूप से सुरुचिपूर्ण विशेष रूप से वीबीस्क्रिप्ट आपको वास्तव में सोने के लिए थ्रेड पूछने का तरीका नहीं देता है ताकि आप सीपीयू को थ्रैश कर सकें।

क्लाइंट पर सर्वर-साइड सत्र और जावास्क्रिप्ट का उपयोग करना बेहतर हो सकता है, इसलिए क्लाइंट अनुरोध में देरी करता है और सर्वर अपेक्षित देरी खत्म होने के बाद ही प्रतिक्रिया भेज देगा। इससे कुछ सर्वर-साइड सुरक्षा उपाय प्रदान किए जा सकते हैं और उन उपयोगकर्ताओं के लिए उपयोग योग्य हो सकते हैं जो आपके सिस्टम के साथ गड़बड़ करने की कोशिश नहीं कर रहे हैं ...

4

एक और दृष्टिकोण है, लेकिन उपरोक्त उपभोग संसाधनों के बारे में उपरोक्त चेतावनी को ध्यान में रखें। यहाँ एक दृष्टिकोण हालांकि

Sub DelayResponse(numberOfseconds) 
Dim WshShell 
Set WshShell=Server.CreateObject("WScript.Shell") 
WshShell.Run "waitfor /T " & numberOfSecond & "SignalThatWontHappen", , True 
End Sub 
+1

पर W10 प्रो आईआईएस –

2

नहीं है सामान्य प्रयोजन VBScript के लिए WScript.Sleep विधि है, हालांकि, इस एएसपी के संदर्भ में काम नहीं करेगा।

ऐसे कई अन्य तंत्र हैं जिनका उपयोग आप इसे प्राप्त करने के लिए कर सकते हैं, हालांकि, वे सभी प्रभावी ढंग से "कामकाज" हैं क्योंकि एएसपी पृष्ठ (चल रहे वीबीस्क्रिप्ट) को स्वयं को रोकने के लिए कोई अंतर्निहित तरीका नहीं है।

यहाँ देखें:

How do I make my ASP page pause or 'sleep'?

विशेष रूप से आपके प्रश्न का उत्तर करने के लिए:

वहाँ क्लासिक एएसपी में ऐसा करने का एक अच्छा तरीका है?

नहीं। कोई अच्छा तरीका यह है नहीं है, और वहाँ केवल है "हैक-tastic" हैक्स कि इस्तेमाल किया जा सकता है, लेकिन वे उन लोगों के साथ दुष्प्रभाव और प्रतिवाद के सभी प्रकार के लाने के लिए। ("मैं अपने एएसपी पेज को रोक या 'नींद' कैसे बना सकता हूं?" एक विशिष्ट मेमोरी खाने के लिए लिंक, पेज ग़लत दुष्प्रभाव को खराब करने वाला पृष्ठ।)

1

आईपी प्रतिबंधों का उपयोग किए बिना ब्रूट फोर्स हमलों से बचने के लिए अन्य दृष्टिकोण एक ही उपयोगकर्ता के दूसरे विफल प्रयास के बाद कैप्चा प्रदान करना है। Google ने ऐसा किया है।

This is how Google does it http://img692.imageshack.us/img692/3231/capturecy.jpg

2

आप उपयोग कर सकते हैं:

<html> 
<head> 
    <title>Sleep</title> 
</head> 
<body> 
    <% 

     function Sleep(seconds) 
      set oShell = CreateObject("Wscript.Shell") 
      cmd = "%COMSPEC% /c timeout " & seconds & " /nobreak" 
      oShell.Run cmd,0,1 
     End function 

     Sleep(5) 

     response.write("End") 
    %> 
</body> 
</html> 
+0

यह एक डब्ल्यू 10 प्रो –

1
<% 
set shell = CreateObject("WScript.Shell") 


t1 = timer() 
sleep(5) 
t2 = timer() 

response.write "waited "& t2-t1 &" secs" 


function sleep(seconds) 
    if seconds>=1 then shell.popup "pausing",seconds,"pause",64 
end function 
%> 
+0

पर काम करता है कृपया अपने कोड को सही ढंग से प्रारूपित करने का तरीका जानें। यहां इसकी तरह का महत्वपूर्ण है। – Will

0

मैं इस का उपयोग कर रहा:

function sleep(scs) 
    Dim lo_wsh, ls_cmd 
    Set lo_wsh = CreateObject("WScript.Shell") 
    ls_cmd = "%COMSPEC% /c ping -n " & 1 + scs & " 127.0.0.1>nul" 
    lo_wsh.Run ls_cmd, 0, True 
End Function 

sleep(5) 'wait for 5 seconds 

अलविदा :-)

-1

जवाब में "देरी करने के लिए प्रतिक्रिया "यो का हिस्सा उर प्रश्न:

dim SecondsToWait : SecondsToWait = 4 
dim StartTime : StartTime = Time() 
Do Until 
    DateDiff("s", StartTime, Time(), 0, 0) > SecondsToWait 
Loop 

एसक्यूएल बिना शुद्ध क्लासिक एएसपी और WScript शैल, लेकिन डिबग देरी प्रयोजनों के लिए ही के लिए । यह परीक्षण (बहुत हेलफुल) के लिए एक स्निपेट है, लेकिन यह आपके प्रश्न ;-)

पूर्णता के लिए और लोगों (डेबग) देरी की तलाश में लोगों के लिए यह उत्तर "अच्छा तरीका" नहीं है। असफल लॉगिन प्रयासों को इस तरह संभाला नहीं जाना चाहिए।

-4

बस यादृच्छिक रूप से नामित बड़ी छवि पर रीडायरेक्ट करें जो लोड करने के लिए वांछित सेकंड लेता है।

+0

यह पर्यावरण (बैंड चौड़ाई, आदि) पर बहुत निर्भर है जो सामान्य रूप से वांछित नहीं है। – TobiMcNamobi

-1

एक और तरीका आप इस कोड का उपयोग करके एएसपी प्रतिक्रिया देरी कर सकते हैं।

Sub MyDelay(NumberOfSeconds) 
Dim DateTimeResume 
DateTimeResume= DateAdd("s", NumberOfSeconds, Now()) 
Do Until (Now() > DateTimeResume) 
Loop 
End Sub 

इस कोड का उपयोग करके इस फ़ंक्शन को कॉल करें।

Call MyDelay(5) 
संबंधित मुद्दे