欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 偽造http請求ip地址的方法

 更新時間:2018年09月28日 09:14:50   作者:碼魘  
這篇文章主要介紹了java 偽造http請求ip地址的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

最近做接口開發(fā),需要跟第三方系統(tǒng)對接接口,基于第三方系統(tǒng)接口的保密性,需要將調(diào)用方的請求IP加入到他們的白名單中。由于我們公司平常使用的公網(wǎng)的IP是不固定的,每次都需要將代碼提交到固定的服務(wù)器上(服務(wù)器IP加入了第三方系統(tǒng)的白名單),頻繁的修改提交合并代碼和啟動服務(wù)器造成了額外的工作量,給接口聯(lián)調(diào)帶來了很大的阻礙。

正常的http請求

我們正常發(fā)起一個http的請求如下:

  import org.apache.http.HttpEntity;
  import org.apache.http.client.config.RequestConfig;
  import org.apache.http.client.methods.CloseableHttpResponse;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.entity.StringEntity;
  import org.apache.http.impl.client.CloseableHttpClient;
  import org.apache.http.impl.client.HttpClients;
  import org.apache.http.util.EntityUtils;
  
  public static String getPost4Json(String url, String json) throws Exception {
    CloseableHttpClient httpClient = HttpClients.createDefault();
    HttpPost httpPost = new HttpPost(url);
    /* 設(shè)置超時 */
    RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).setConnectionRequestTimeout(5000).build();
    httpPost.setConfig(defaultRequestConfig);
    httpPost.addHeader("Content-Type", "application/json;charset=UTF-8");
    httpPost.setEntity(new StringEntity(json, "UTF-8"));
    CloseableHttpResponse response = null;
    String result = null;
    try {
      response = httpClient.execute(httpPost);
      HttpEntity entity = response.getEntity();
      result = EntityUtils.toString(entity, "UTF-8");
    } catch (Exception e) {
      throw e;
    } finally {
      if (response != null) response.close();
      httpClient.close();
    }
    return result;
  }

由于沒有加入白名單的原因,這樣的請求顯然無法調(diào)用到第三方的接口。這時候考慮能否將請求的ip改為白名單的一個ip,服務(wù)器在解析時拿到的不是正常的ip,這樣能否正常調(diào)用呢?

偽造http請求ip地址

我們知道正常的tcp/ip在通信過程中是無法改變源ip的,也就是說電腦獲取到的請求ip是不能改變的。但是可以通過偽造數(shù)據(jù)包的來源ip,即在http請求頭加一個x-forwarded-for的頭信息,這個頭信息配置的是ip地址,它代表客戶端,也就是HTTP的請求端真實的IP。因此在上面代碼中加上如下代碼:

httpPost.addHeader("x-forwarded-for",ip);

服務(wù)端通過x-forwarded-for獲取請求ip,并且校驗IP安全性,代碼如下:

String ip = request.getHeader("x-forwarded-for");

總結(jié)

通過請求頭追加x-forwarded-for頭信息可以偽造http請求ip地址。但是若服務(wù)器不直接信任并且不使用傳遞過來的 X-Forward-For 值的時候偽造IP就不生效了。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java并發(fā)編程示例(七):守護線程的創(chuàng)建和運行

    Java并發(fā)編程示例(七):守護線程的創(chuàng)建和運行

    這篇文章主要介紹了Java并發(fā)編程示例(七):守護線程的創(chuàng)建和運行,在本節(jié)示例中,我們將創(chuàng)建兩個線程,一個是普通線程,向隊列中寫入事件,另外一個是守護線程,清除隊列中的事件,需要的朋友可以參考下
    2014-12-12
  • SpringBoot對接Spark過程詳解

    SpringBoot對接Spark過程詳解

    這篇文章主要介紹SpringBoot接入Spark的方法的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望能幫助大家解決問題
    2023-02-02
  • JAVA使用TreeMap對字符串進行排序

    JAVA使用TreeMap對字符串進行排序

    這篇文章主要介紹了JAVA使用TreeMap對字符串進行排序,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • SpringBoot使用Jwt處理跨域認證問題的教程詳解

    SpringBoot使用Jwt處理跨域認證問題的教程詳解

    這篇文章主要介紹了SpringBoot使用Jwt處理跨域認證問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • 詳解JAVA Stream流

    詳解JAVA Stream流

    這篇文章主要介紹了JAVA Stream流的相關(guān)資料,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • Java實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)提取所需知識點

    Java實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)提取所需知識點

    這篇文章主要介紹了Java實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)提取所需知識點,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • C++內(nèi)存管理看這一篇就夠了

    C++內(nèi)存管理看這一篇就夠了

    這篇文章主要介紹了C/C++中的內(nèi)存管理小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-08-08
  • 詳解Spring MVC4 純注解配置教程

    詳解Spring MVC4 純注解配置教程

    本篇文章主要介紹了Spring MVC4 純注解配置教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • java、freemarker保留兩位小數(shù)

    java、freemarker保留兩位小數(shù)

    這篇文章主要介紹了 java、freemarker保留兩位小數(shù)的實現(xiàn)方法,然后給大家補充介紹了freemarker保留兩位小數(shù)的詳解,需要的朋友可以參考下
    2017-03-03
  • Java文檔注釋用法+JavaDoc的使用說明

    Java文檔注釋用法+JavaDoc的使用說明

    這篇文章主要介紹了Java文檔注釋用法+JavaDoc的使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論