有没有人有一个方便的正则表达式,可以匹配任何合法的DNS主机名或IP地址?
编写一个可以在95%的时间内工作的一个很容易,但是我希望得到一些经过充分测试的东西,以完全匹配最新的RFC主机名规范.
我的设置:Rails 3.0.9,Ruby 1.9.2
我正在开发我的第一个中间件应用程序,似乎所有示例都涉及修改响应.我需要检查和修改请求标头,特别是删除导致Rack 1.2.3中的错误的一些有问题的标头.这是典型的hello world Rack应用程序.
my_middleware.rb
class MyMiddleware
def initialize(app)
@app = app
end
def call(env)
@status, @headers, @response = @app.call(env)
[@status, @headers, @response]
end
end
Run Code Online (Sandbox Code Playgroud)
有没有人有一个例子来处理请求头部并在Rack获得它之前拦截它们?我需要在进入Rack进行解析之前修改请求标头.我有这个设置,认为把它放在Rack之前可能会做到这一点,但我不确定是否以这种方式强制执行.
application.rb
config.middleware.insert_before Rack::Lock, "MyMiddleware"
Run Code Online (Sandbox Code Playgroud) 我的错误报告服务收到大量关于IP欺骗攻击的电子邮件,频率越来越高.如果我理解正确,当请求设置HTTP标头指定请求来自的IP地址不是原始IP地址时,就会发生这种情况.
错误消息如下所示:
IP spoofing attack?!HTTP_CLIENT_IP="10.212.0.172"HTTP_X_FORWARDED_FOR="10.212.0.172, 68.180.224.232"
Run Code Online (Sandbox Code Playgroud)
如果我正确读取此错误,则此错误消息中的两个IP地址是本地IP地址(10.xxx)和Yahoo! IP地址(68.180.224.232).
我不确定我是否正确阅读,但似乎这可能是由Yahoo抓取工具引起的.错误会报告许多不同的URL,使其看起来像一个爬虫.此外,它似乎是一个合法的请求,因为它是通过外部IP路由的内部IP.
我的问题是:
更新:我查看了请求参数,用户代理确实是Yahoo抓取工具:
Mozilla/5.0(兼容; Yahoo!Slurp; http://help.yahoo.com/help/us/ysearch/slurp)