host头攻击

摘要:
如果前端或后端仅使用此值,例如,jsp的StringbasePath=request。getScheme()+“://”+请求。getServerName()+“:”+请求getServerPort();然后,黑客可以通过修改HOST中的域名值进行攻击。例如,请求。getServerName()更改为www.baidu1.com,以便在页面中引用请求后传输请求。

一、问题源起

  HTTP1.1规范中在增加了HOST头信息,用于存储服务端与客户端的路由信息。

  例如:

    Request的Header里就有一个标名请求,它是用来记录服务端网站域名的。

    如果前端或者后台正好用到这个值,比如jsp的

      String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort();

    那么黑客就可以通过修改HOST里域名值以达到攻击的目的。

      比如request.getServerName()改成:www.baidu1.com,这样页面内引用后请求就会被转接了。

host头攻击第1张

二、解决思路

  主要解决方案主要分为两个:

  1、不用HOST头的东西

  2、防止“敌方”篡改这部分信息

  3、使用加密等手段,使得篡改成本高到无以复加

三、解决方案

  

1、nginx代理强制指定header内容,例如:

// nginx修改ngnix.conf文件

  server {
    ...
    server_name www.abc.com; 
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    ...
  }

 

2、Apache,修改httpd.conf文件,指定ServerName,并开启UseCanonicalName选项。

3、Tomcat,修改server.xml文件,配置Host的name属性。

参考来源:

https://blog.csdn.net/u012903926/article/details/81702224

https://www.jianshu.com/p/690acbf9f321

免责声明:文章转载自《host头攻击》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇lua的深拷贝和浅拷贝FFmpeg在Linux下编译使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

深入剖析PHP输入流 php://input

另附一个一个连接: http://www.nowamagic.net/academy/detail/12220520 ///////////////////////////////////////////////////////////////另一种解释////////////////////////////////////////////////////...

网络编程之Socket代码实例

网络编程之Socket代码实例 一、基本Socket例子 Server端: # Echo server program import socket HOST = '' # Symbolic name meaning all available interfaces PORT = 50007 # A...

mysql主从之keepalive+MySQL高可用

一 keepalive介绍 1.1 keepalived 是什么 keepalived 是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。 1.2 keepalived 工作原理 keepalived 是以VRRP 协议为实现基础的,VRRP 全称VirtualRouter Redundancy Protocol,即虚拟路由冗余协议。虚拟路由冗...

一站式Web开发套件BeetleX.WebFamily

          BeetleX.WebFamily是一款前后端分离的Web开发套件,但它并不依赖于nodejs/npm/webpack等相关工具;而使用自身实现的方式来完成前后端分离的Web应用开发;套件以组件的方式发布,只需要在项目引用相关组件即可实现前后端分离开发,开发出来的项目可直接部署在装用.NetCore的Linux和Windows系统上。...

时间序列数据库调研之InfluxDB

基于 Go 语言开发,社区非常活跃,项目更新速度很快,日新月异,关注度高 测试版本 1.0.0_beta2-1 安装部署 wget https://dl.influxdata.com/influxdb/releases/influxdb-1.0.0_beta2.x86_64.rpm sudo yum localinstall influxdb-1.0.0...

PHP 使用 header 方式实现文件下载功能

header() 函数向客户端发送原始的 HTTP 报头。 下载文件要用的的请求头: header("Content-type:application/octet-stream"); header("Accept-Ranges:bytes"); header("Accept-Length:" . $file_Size); header("Content-D...