Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何理解和减少Rails应用程序中的IP欺骗攻击错误?

如何理解和减少Rails应用程序中的IP欺骗攻击错误?
EN

Stack Overflow用户
提问于 2014-01-22 11:18:44
回答 2查看 1.8K关注 0票数 8

我从我的错误报告服务收到了很多关于IP欺骗攻击的电子邮件,而且频率越来越高。如果我正确理解,当请求设置一个HTTP报头,指定请求来自的IP地址不是原始IP地址时,就会发生这种情况。

错误消息如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
IP spoofing attack?!HTTP_CLIENT_IP="10.212.0.172"HTTP_X_FORWARDED_FOR="10.212.0.172, 68.180.224.232"

如果我正确地阅读了这个错误消息,那么这个错误消息中的两个IP地址是本地IP地址(10.x.x.x)和一个Yahoo!IP地址(68.180.224.232)。

我不确定我是否正确的阅读,但似乎这可能是由雅虎爬虫造成的。错误报告在许多不同的URL上,这使它看起来像一个爬虫。而且,这似乎是一个合法的请求,因为它是通过外部IP路由的内部IP。

我的问题是:

  • 如何确定这些请求是合法请求还是恶意请求。
  • 如果是恶意的,允许这些获取请求有什么坏处?
  • 无论哪种方式,我如何防止这些错误发生(除了关闭电子邮件通知)?我需要找到阻止IP地址的方法吗?如果这是合法的请求呢?我需要设置某种白名单吗?

雅虎更新(Update):我查看了请求参数,用户代理确实是雅虎爬虫:

Mozilla/5.0 (兼容;Yahoo!浆糊;http://help.yahoo.com/help/us/ysearch/slurp)

EN

回答 2

Stack Overflow用户

发布于 2020-11-18 21:47:34

如何确定这些请求是合法的还是恶意的?

IP欺骗本身并不危险,但它主要用于DDoS (分布式拒绝服务)攻击,将IP地址屏蔽到不同的IP地址,使其呈现分布式。您可以使用这个创业板这里来计算出任何一个IP地址都是机器人/爬虫/蜘蛛。

如果是恶意的,允许这些GET请求有什么害处?

通过允许来自欺骗IP的GET请求,您很容易被DDoS‘’ed和您的服务器上的负载将增加,如果您有自动缩放打开,您将不得不花费更多。

无论怎样,我如何防止这些错误发生(除了关闭电子邮件通知)?我需要找到阻止IP地址的方法吗?如果这是合法的请求呢?我需要设置某种白名单吗?

请参考这个答案这里,它详细说明了解决这个问题的最佳方法。我有另一种方法,我将在下面解释。

我还没有测试下面的代码,但简而言之,它检查两个标头是否都存在,如果是,则检查它们是否相等。如果这两种情况都为真,则可以引发异常或重定向到状态代码为400的错误页,由您决定。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    def ip_spoofing_check
        if request.env['HTTP_CLIENT_IP'] && request.env['HTTP_X_FORWARDED_FOR']
            if request.env['HTTP_CLIENT_IP'] != request.env['HTTP_X_FORWARDED_FOR']
            response.status = 400
            response = {:status => false, :message => "IP Spoofing Attempt"}
            respond_to do |format| format.json { render json: response} end
            end
        end
    end

不要忘记在应用程序控制器的before_action中调用此函数。

祝好运!

票数 1
EN

Stack Overflow用户

发布于 2014-01-22 12:00:30

也许不是一个完整的答案,但我一直在使用这个gem作为异常通知,它支持过滤出爬虫引发的异常

爬行器

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21291959

复制
相关文章
HTML UTF-8 货币符号
<p>我将显示 &euro;<p> <p>我将显示 &#8364;<p> <p>我将显示 &#x20AC;<p>
用户4047016
2019/11/05
2.5K0
HTML UTF-8 货币符号
国际化之货币符号显示
我发现手机上显示的货币符号跟实际遇到的可能不一样,为此我逐一查询了不同国家/地区的显示。大部分是确定的,有几个国家不太确定。
meteoric
2018/11/20
1.4K0
散点自定义符号——在散点图中创建自定义椭圆符号。
from matplotlib import colors as mcolors, path from matplotlib.collections import RegularPolyCollection import matplotlib.pyplot as plt from matplotlib.widgets import Lasso import numpy as np class Datum: colorin = mcolors.to_rgba("red") colorou
裴来凡
2022/05/28
5110
散点自定义符号——在散点图中创建自定义椭圆符号。
iOS小技能:金额格式处理 (货币符号本地化)
iOS 系统自带格式化NSFormatter的常用子类有:NSNumberFormatter(数字格式化)、NSDateFormatter(NSISO8601DateFormatter日期格式化)、NSPersonNameComponentsFormatter(名片格式化)、NSMeasurementFormatter(数量单位格式化)。
公众号iOS逆向
2022/08/22
2.3K0
iOS小技能:金额格式处理 (货币符号本地化)
Js/JQuery将数字金额转换为其他国家货币格式(包括货币符号和千分符)
如上述js,其他国家只需要更换NumberFormat中对应的国家currency及国际化地区语言码即可.立即查看各国对照表
目的地-Destination
2023/03/06
1.3K0
使用CSS ::marker的自定义项目符号
现在,在使用 <ul> 或 <ol> 时自定义数字或项目符号的颜色,大小或类型很简单。
张张
2020/11/23
1.9K0
使用CSS ::marker的自定义项目符号
android自定义钟表android自定义钟表
接下来就是设定这个自定义View的大小,在没有大小自适应的时候,view的高度我这位整个手机屏幕高度的三分之一,宽度为整个屏幕的宽度
HelloJack
2018/08/28
1K0
android自定义钟表android自定义钟表
android 自定义控件 attrs,android 使用attrs自定义控件
1、在values下新建一个attrs.xml的资源文件(my_attrs.xml)
全栈程序员站长
2022/11/02
8350
加密货币: 数字货币如何改变金融
上周,Twitter首席执行官Jack Dorsey宣布,他同时经营的金融公司Square将推出一个新的平台,将使用比特币创建去中心化金融项目。在这些天马斯克围绕加密货币习惯性的、持续的网络噪音输出中,你能不给Dorsey的举动以时间吗?Square的项目最终可能会作为一个分水岭被记住,而那也会是去中心化金融,或 "DeFi",最终进入主流的时刻。
用户7358413
2021/07/25
1.1K0
Android自定义Dialog
在开发中,我们经常会用到一些自定义布局的对话框。每次自己写的时候,经常会遇到一些细小的问题需要上网来解决,所以干脆把经常遇到的几个问题总结了一下,这样就可以愉快自定义dialog了。本文主要总结的问题有:1.对话框的大小、位置 2.对话框的主题
developerHaoz
2022/05/13
1.2K0
Android自定义Dialog
Android自定义控件
时隔一年,用新知识重构一个老库一年前,用 Java 写了一个高可扩展选择按钮库。单个控件实现单选、多选、菜单选,且选择模式可动态扩展。
前端小tips
2021/11/28
5.9K0
Android自定义控件
Android 自定义 Snackbar
Snackbar: Android 官方的一个控件,在 Android 应用中也算很常见了,用来显示应用交互中正在发生的消息,跟 Toast 类似,又有所区别,关于它的简单介绍和使用见上篇。Android 关于 Snackbar 基本使用。
用户8928967
2023/02/28
1.7K0
Android 自定义 Snackbar
android自定义控件
Android为开发者提供了大量的控件,这些控件只能满足一般性的需求,有时候需要开发者重新定制控件。控件的定制有三种形式:对原有控件的重写;对原有控件进行组合;自定义新的控件。Android中所有控件类都是View的子类。 本例主要是讲一个自定义时钟控件,该控件直接继承View类。 1.控件类 首先需要编写控件类,该类继承View类,并实现接口Runnable。时钟控件主要包含的参数:clockimageresourceid,scale,handcenterwidthscale,handcenterheig
水击三千
2018/02/27
1K0
android自定义属性
1、引言 对于自定义属性,大家肯定都不陌生,遵循以下几步,就可以实现: 自定义一个CustomView(extends View )类 编写values/attrs.xml,在其中编写styleable和item等标签元素 在布局文件中CustomView使用自定义的属性(注意namespace) 在CustomView的构造方法中通过TypedArray获取 ps:如果你对上述几个步骤不熟悉,建议先熟悉下,再继续~ 那么,我有几个问题: 以上步骤是如何奏效的? styleable 的含义是什么?
xiangzhihong
2018/02/01
2.2K0
android 自定义相机
老规矩,先上一下项目地址:GitHub:https://github.com/xiangzhihong/CameraDemo 方式: 调用Camera API 自定义相机 调用系统相机 由于需求不同,所以选择的方案固然也不同,至于第二种调用系统相机,这里就不过多讲解了,使用Intent对象设置一个Action动作即可,跳转时使用startActivityForResult,然后在onActivityResult处理相关数据便可,关键代码: intent.setAction("android.me
xiangzhihong
2018/02/01
3K0
android 自定义相机
Android 自定义View
这篇文章是一个自定义View的学习总结文章,会介绍自定义view的整体流程和部分相关的api使用,并不会对所有使用到的api进行介绍,所以阅读的话需要有一些Android的开发基础。
艳龙
2022/05/13
4700
Android 自定义View
Android自定义GLSurfaceView
当我们需要把同一个场景渲染到不同的Surface上时,此时系统GLSurfaceView 就不能满足需求了,所以我们需要自己创建EGL环境来实现渲染操作。 注意: OpenGL整体是一个状态机,通过改变状态就能改变后续的渲染方式,而 EGLContext(EgL上下文)就保存有所有状态,因此可以通过共享EGLContext 来实现同一场景渲染到不同的Surface上。
曾大稳
2018/09/11
1.7K0
Android自定义GLSurfaceView
android 自定义Lint
概述 Android Lint是Google提供给Android开发者的静态代码检查工具。使用Lint对Android工程代码进行扫描和检查,可以发现代码潜在的问题,提醒程序员及早修正。 为什么要自定义 我们在实际使用Lint中遇到了以下问题: 原生Lint无法满足我们团队特有的需求,例如:编码规范。 原生Lint存在一些检测缺陷或者缺少一些我们认为有必要的检测。 对于正式发布包来说,debug和verbose的日志会自动不显示。 基于上面的考虑,我们开始调研并开发自定义Lint。开发中我们希望开发者使用R
xiangzhihong
2018/02/06
1.5K0
android 自定义Lint
Android自定义View
前几天在郭霖大神的博客上看了自定义View的知识,感觉受益良多,大神毕竟大神。在此总结一下关于Android 自定义View的用法:
指点
2019/01/18
6090
Android自定义View
点击加载更多

相似问题

Android货币符号排序

10

Android:将货币符号转换为货币代码

12

返回不同货币符号的Android货币格式

11

在Android上检索货币符号

16

货币符号的货币格式

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文