有沒有一種方法來實現IP過濾或IP訪問規則,就像我用nginx/apache限制或阻止Heroku上的某些IP一樣?如何阻止或過濾Heroku上的IP地址?
注:我知道這可以從我的應用程序(Rails 3.2)很容易地完成,但我不認爲這是我的資源在Heroku上最有效的使用。此外,基於Rack的解決方案將比在Rails中實施過濾更好。
有沒有一種方法來實現IP過濾或IP訪問規則,就像我用nginx/apache限制或阻止Heroku上的某些IP一樣?如何阻止或過濾Heroku上的IP地址?
注:我知道這可以從我的應用程序(Rails 3.2)很容易地完成,但我不認爲這是我的資源在Heroku上最有效的使用。此外,基於Rack的解決方案將比在Rails中實施過濾更好。
我添加了'rack-block'作爲Rack中間件。在config/initializers中,添加一個新文件:
YourApp::Application.configure do
config.middleware.insert_before(Rack::Lock, Rack::Block) do
# Add your rules with the rack-block syntax in here
end
end
工程就像一個魅力。
您應該檢查出rack-attack
。看起來它和rack-block一樣,但是經常被廣泛使用和更新。要阻止特定的IP,你可以這樣做:
# Block requests from 1.2.3.4
Rack::Attack.blacklist('block 1.2.3.4') do |req|
# Requests are blocked if the return value is truthy
'1.2.3.4' == req.ip
end
我可以阻止IP範圍嗎?即1.2.3。*? –
@Stefanos .Ioannou阻止你剛纔需要的值,確保你傳遞給'Rack :: Attack.blacklist'的塊返回true。你可以這樣做: '(0..255).map {| val | '1.2.3。'+ val.to_s} .include?(req.ip)' – Phil
@Phil我對一個人爲的例子很迂腐,但是......;)你可能會用'starts_with更好? ('1.2.3')'那裏 - 建立一個由256個字符串組成的數組,然後檢查這些ip是否在這些數字之間在計算上,但可能不是你想要做的每一個請求,如果沒有必要的。 –
謝謝,這正是我一直在尋找的。我現在有點關心我的Google搜索技巧。 –
有沒有一種方法可以在請求命中dyno前阻止centain地址? –
如何阻止除我想允許的一個IP之外的所有IP地址?對我來說,似乎與機架塊我必須列出所有我想阻止的IP地址:( – morgler