最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 判斷字符串中是否包含中文的實例詳解

    Java 判斷字符串中是否包含中文的實例詳解

    這篇文章主要介紹了Java 判斷字符串中是否包含中文的實例詳解的相關(guān)資料,這里提供實例來說明該如何實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08
  • java實用小技巧之判斷l(xiāng)ist是否有重復(fù)項簡單例子

    java實用小技巧之判斷l(xiāng)ist是否有重復(fù)項簡單例子

    這篇文章主要給大家介紹了關(guān)于java實用小技巧之判斷l(xiāng)ist是否有重復(fù)項的相關(guān)資料,在開發(fā)工作中我們有時需要去判斷List集合中是否含有重復(fù)的元素,需要的朋友可以參考下
    2023-10-10
  • Java多線程Thread基礎(chǔ)學(xué)習(xí)

    Java多線程Thread基礎(chǔ)學(xué)習(xí)

    每一個正在執(zhí)行的程序都是一個進(jìn)程,資源只有一塊,所以在同一時間段會有多個程序同時執(zhí)行,但是在一個時間點上,只能由一個程序執(zhí)行,多線程是在一個進(jìn)程的基礎(chǔ)之上的進(jìn)一步劃分,需要的朋友可以參考下
    2023-04-04
  • Mybatis-Plus的SQL語句組拼原理說明

    Mybatis-Plus的SQL語句組拼原理說明

    這篇文章主要介紹了Mybatis-Plus的SQL語句組拼原理說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java開發(fā)技巧代碼寫的快且bug少的原因分析

    java開發(fā)技巧代碼寫的快且bug少的原因分析

    這篇文章主要為大家介紹了java開發(fā)中代碼寫的快且bug少的原因分析及技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • kettle中使用js調(diào)用java類的方法

    kettle中使用js調(diào)用java類的方法

    這篇文章主要介紹了kettle中使用js調(diào)用java類的方法,本文講解了注意事項和調(diào)用語法,需要的朋友可以參考下
    2015-05-05
  • JavaWeb實現(xiàn)簡單用戶發(fā)送郵件

    JavaWeb實現(xiàn)簡單用戶發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了JavaWeb實現(xiàn)簡單用戶發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • RabbitMQ使用SpringAMQP的配置方法

    RabbitMQ使用SpringAMQP的配置方法

    這篇文章主要介紹了RabbitMQ使用SpringAMQP的配置方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03
  • IDEA中Maven依賴下載失敗的完美解決方案

    IDEA中Maven依賴下載失敗的完美解決方案

    使用IDEA進(jìn)行Maven項目開發(fā)時,時不時會遇到pom.xml報錯的情況,其中很大概率是因為Maven依賴的jar包下載失敗,找來找去也沒有找到是什么問題,困擾了很多程序猿,這里給出IDEA中Maven依賴下載失敗解決方案,給大家參考,實測有用
    2020-04-04
  • eclipse實現(xiàn)ECDSA數(shù)字簽名

    eclipse實現(xiàn)ECDSA數(shù)字簽名

    這篇文章主要為大家詳細(xì)介紹了eclipse實現(xiàn)ECDSA數(shù)字簽名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06

最新評論

舞阳县| 盱眙县| 贞丰县| 平利县| 桑日县| 卢氏县| 淮南市| 和林格尔县| 都安| 秀山| 凤山县| 广饶县| 上杭县| 呼图壁县| 鄂伦春自治旗| 白朗县| 常宁市| 政和县| 尼玛县| 常州市| 库车县| 上虞市| 日喀则市| 资中县| 泗阳县| 东源县| 怀仁县| 卢龙县| 惠来县| 那曲县| 鄂托克前旗| 潜山县| 宁陕县| 上犹县| 体育| 阿克陶县| 宝山区| 乌审旗| 克东县| 西吉县| 武宣县|