<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    關于X-Forwarded-For被偽造情況下獲取真實ip的處理

    一顆小胡椒2022-01-10 21:11:12

    背景

    在風控場景下,有很多基于客戶端ip的風控規則。通常通過http協議頭中的X-Forwarded-For來獲取ip,但該字段很容易被偽造,這種情況下該如何處理?

    概念

    X-Forwarded-For X-Forwarded-For 是一個擴展頭。HTTP/1.1(RFC 2616)協議并沒有對它的定義,它最開始是由 Squid 這個緩存代理軟件引入,用來表示 HTTP 請求端真實 IP,現在已經成為事實上的標準,被各大 HTTP 代理、負載均衡等轉發服務廣泛使用,并被寫入 RFC 7239(Forwarded HTTP Extension)標準之中.

    $remote_addr

    是nginx與客戶端進行TCP連接過程中,獲得的客戶端真實地址. Remote Address 無法偽造,因為建立 TCP 連接需要三次握手,如果偽造了源 IP,無法建立 TCP 連接,更不會有后面的 HTTP 請求

    $X-Real-IP

    是一個自定義頭。X-Real-Ip 通常被 HTTP 代理用來表示與它產生 TCP 連接的設備 IP,這個設備可能是其他代理,也可能是真正的請求端。需要注意的是,X-Real-Ip 目前并不屬于任何標準,代理和 Web 應用之間可以約定用任何自定義頭來傳遞這個信息

    分析

    網絡請求通常是瀏覽器(或其他客戶端)發出請求,通過層層網絡設備的轉發,最終到達服務端。那么每一個環節收到請求中的remote_addr必定是上游環節的真實IP,這個無法偽造。那從全鏈路來看,如果需要最終請求的來源,則通過X-Forwarded-For來進行追蹤,每一環節的ip(remote_addr)都添加到X-Forwarded-For字段之后,這樣X-Forwarded-For就能串聯全鏈路了。

    X-Forwarded-For: client_ip, proxy1_ip, proxy2_ip
    

    以Nginx為例,添加X-Forwarded-For的配置方式為:

     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    

    如果用戶在請求時候偽造的話,那么會出現上面案例的client1前面,出現偽造的ip:

    X-Forwarded-For: 偽造ip1, 偽造ip2, client_ip, proxy1_ip, proxy2_ip
    

    這樣的話,需要取真實的client_ip,則需要取proxy1_ip前一個ip值;

    如果想要過濾掉或覆蓋偽造的ip的話,則需要第一層代理(proxy1)用remote_addr來覆蓋X-Forwarded-For:

    proxy_set_header X-Forwarded-For $remote_addr;
    

    驗證

    準備Mock服務

    from flask import Flaskfrom flask import request
    app = Flask(__name__)
    @app.route('/HelloWorld')def hello_world():    print request.headers    return "Hello World!"
    if __name__ == "__main__":    app.run
    

    準備Nginx代理

    #user  nobody;worker_processes  1;
    events {    worker_connections  1024;}
    http {    include       mime.types;    default_type  application/octet-stream;
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      '$status $body_bytes_sent "$http_referer" '                      '"$http_user_agent" "$http_x_forwarded_for"';
        access_log  logs/access.log  main;
        sendfile        on;    #tcp_nopush     on;
        #keepalive_timeout  0;    keepalive_timeout  65;
        #gzip  on;
        proxy_set_header Host $host;     proxy_set_header Cookie $http_cookie;     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        server {        listen       80;        server_name  localhost;
            #charset koi8-r;
            #access_log  logs/host.access.log  main;
            location / {            root   html;            index  index.html index.htm;            proxy_pass http://localhost:5000/;        }
            #error_page  404              /404.html;
            # redirect server error pages to the static page /50x.html        #        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }
    

    PostMan偽造x-forwarded-for發起請求

    Nginx打印日志,可以看到前面打印的是$remote_addr真實IP,后面打印的是X-Forwarded-For偽造IP

    Mock服務日志,可以看到真實地址已經被Nginx拼到X-Forwarded-For后面了

    版權申明:內容來源網絡,版權歸原創者所有。除非無法確認,都會標明作者及出處,如有侵權,煩請告知,我們會立即刪除并致歉!

    軟件
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    根據SecurityScorecard發布的《全球第三方網絡安全漏洞報告》顯示,2023年大約29%的違規行為可歸因于第三方攻擊媒介,因為許多違規行為的報告沒有指定攻擊媒介,所以實際比例可能要更高。MOVEit、CitrixBleed和Proself是2023年的軟件供應鏈方面三個最廣泛利用的漏洞,其中MOVEit零日漏洞產生廣泛影響可能被歸咎于第三方、第四方甚至第五方。
    近日,以色列網絡安全公司Seal Security宣布獲得由Vertex Ventures Israel領投的740萬美元種子輪融資,Seal歸屬軟件供應鏈安全賽道,其研發的平臺產品主要利用生成式AI為客戶提供自動化的修復解決方案,其平均修復時間可從過去幾個月縮短到現在的幾個小時,足以以應對軟件供應鏈這一日益嚴峻的挑戰。
    通過在開源軟件包中插入惡意代碼來迅速將惡意軟件傳播到整個軟件供應鏈中是惡意分子常用的攻擊手段。然而,最新的研究發現,如果用戶等待大約14天后再將這些軟件包更新到最新版本,就可以避免受到軟件包劫持攻擊的不良影響。
    軟件組成分析(SCA)應用程序安全測試(AST)工具市場的一個細分市場,負責管理開源組件的使用。SCA工具自動掃描應用程序的代碼庫,包括容器和注冊表等相關構件,以識別所有開源組件、它們的許可證遵從性數據和任何安全漏洞。除了提供對開源使用的可見性之外,一些SCA工具還通過區分優先級和自動補救來幫助修復開源漏洞。SCA工具通常從掃描開始,生成產品中所有開源組件的清單報告,包括所有直接和傳遞依賴項。擁有
    軟件安全之CRC檢測
    2023-04-19 09:47:57
    k++)//因為這里異或是從數據的高位開始,所以需要計算的數據左移8位,這里就需要計算8次。1)//判斷最高位是否為1. 0xEDB88320;//最高位為1,右移一位,然后與0xEDB88320異或???相當于例子2中110與000異或值是不變的
    基于各方在自身領域的專業積累,將此次調研工作進行了明確的分工,并將不定期進行調研分享交流會。
    各類攻防演練的結果證明,軟件供應鏈攻擊已成為投入低、見效快、易突破的有效方式。總體思路與原則:合規是底線,管理是準則,制度是要求,技術是支撐,服務是保障,流程是協作。安全管理制度的建立,能夠規范軟件供應鏈涉及的內部、外部角色的行為,同時提供制度性保障。其次,針對軟件開發各階段與存在的風險,引入對應的安全能力,提供技術支撐,確保安全質量。
    新推出的開放框架尋求為公司和安全團隊提供全面且可行的方式深入了解軟件供應鏈攻擊行為及技術。這項名為開放軟件供應鏈攻擊參考(OSC&R)的計劃由以色列軟件物料安全管理公司OX Security主導,評估軟件供應鏈安全威脅,覆蓋一系列攻擊途徑,比如第三方庫和組件漏洞、構建及開發系統供應鏈攻擊,以及被黑或惡意軟件更新包。
    當下,軟件開發安全的理念很火,各行各業都已認識到保障應用系統開發安全的重要性,但是要真正實現起來,結果卻不是那么理想。
    軟件常見漏洞的解析
    2022-11-28 10:16:06
    理論基礎漏洞可以定義為“在軟件和硬件組件中發現的計算邏輯(例如代碼)中的弱點,當被利用時,會對機密性,完整性
    一顆小胡椒
    暫無描述
      亚洲 欧美 自拍 唯美 另类