2013-05-03 4 views
5

मेरे पास उसकेोकू पर एक रेल ऐप है, और प्रति सेकंड लगभग 10 अनुरोध हैं, जो अजीब है क्योंकि कोई भी अभी ऐप का उपयोग नहीं कर रहा है। सभी अनुरोध यूआरआई के लिए हैं जो स्पष्ट रूप से सुरक्षा भेद्यता का फायदा उठाने का प्रयास कर रहे हैं।ब्लॉक आईपी हैकोकू पर एक रेल ऐप में

http://myapp.com/etc/passwd 

और ऐसी चीजें।

मैं इस व्यक्ति को अपने ऐप तक पहुंचने से कैसे रोक सकता हूं? क्या इसके लिए कोई त्वरित समाधान है?

उत्तर

7

शायद rack-attack आप जो चाहते हैं वह करेंगे?

# Block requests from 1.2.3.4 
Rack::Attack.blacklist('block 1.2.3.4') do |req| 
    # Request are blocked if the return value is truthy 
    '1.2.3.4' == req.ip 
end 
+1

क्या कोई तरीका है कि मैं इसे डेटाबेस तालिका से गतिशील रूप से काम करने के लिए सेट कर सकता हूं? इसका उपयोग करके मैं एक प्रकार का उपयोगकर्ता-ब्लैकलिस्ट कैसे बना सकता हूं? – OneChillDude

+0

शायद, लेकिन आपको ऐसा लगता है कि ऐसा लगता है कि ऐसा लगता है। यदि आप कोई भी पा सकते हैं, तो आप वहां अन्य रेल विकल्प देखना चाहेंगे। – catsby

+1

रेडिस, दस्तावेज़ीकरण के दावों के लिए अंतर्निहित समर्थन है। – RandallB

2

मेरी प्रतिक्रिया थोड़ी देर हो चुकी है, लेकिन बाद में आपने गतिशील रूप से आईपी जोड़ने के बारे में पूछा था, साथ ही साझा भी हो सकता है।

इस Github Issue से। शायद आप अपने कैश स्टोर में किसी आईपी की उपस्थिति/अस्तित्व का उपयोग यह निर्धारित करने के लिए कर सकते हैं कि इसे अवरुद्ध किया जाना चाहिए (मैन्युअल रूप से आईपी जोड़ना और ऐप को फिर से तैनात करना)।

Rack::Attack.blacklist('block <ip>') do |req| 
    # if variable `block <ip>` exists in cache store, then we'll block the request 
    Rails.cache.fetch("block #{req.ip}").present? 
end 

ऐप से या कंसोल से, आप अपने कैश स्टोर पर लिख सकते हैं।

Rails.cache.write('block 1.2.3.4', true, expires_in: 5.days) 
संबंधित मुद्दे