| کانال امنیت و شبکه |
خیلی وقتها روی backend فقط remote_addr رو لاگ میگیریم و فکر میکنیم IP واقعی کاربره؛ اما پشت Nginx / Proxy / Load Balancer، این IP معمولاً IP همون Proxy هست، نه کلاینت 🎯
راهحل استاندارد استفاده از هدر X-Forwarded-For (یا X-Real-IP) و تنظیم درست اپلیکیشن و Reverse Proxy ـه. این کار برای تحلیل Incident، تشخیص حملات و Alert کردن روی IP خیلی مهمه.
مثال ساده با Flask پشت Nginx:
from flask import Flask, request
app = Flask(__name__)
TRUSTED_PROXIES = {"127.0.0.1", "10.0.0.1"} # IP های Nginx / LB
@app.before_request
def log_real_ip():
remote = request.remote_addr
xff = request.headers.get("X-Forwarded-For", "")
if remote in TRUSTED_PROXIES and xff:
# اولین IP معمولا نزدیکترین کلاینت است
real_ip = xff.split(",")[0].strip()
else:
real_ip = remote
app.logger.info(f"real_ip={real_ip} path={request.path}")
@app.route("/")
def index():
return "OK"
if __name__ == "__main__":
app.run()
نکات مهم ✅
• فقط وقتی به X-Forwarded-For اعتماد کن که درخواست از Proxyهای شناختهشده میآد (مثل لیست بالا). هدر رو کاربر نهایی هم میتونه جعل کنه.
• روی Nginx مطمئن شو real_ip_header و set_real_ip_from درست ست شدن تا remote_addr سمت اپ منطقی باشه.
• IP واقعی در لاگها برای Rate Limit، تشخیص حملات Brute Force و Audit لاگها حیاتی است.
مناسبترین رفرنس برای Best Practice لاگگیری و هدرها در اپهای وب:
OWASP Logging Cheat Sheet
امتحان این الگو روی یک سرویس تستی پشت Nginx کمک میکند قبل از رفتن به محیط Production، رفتار لاگگیری IP را دقیق ببینی و تنظیمات را سفت و تمیز کنی 🔍
🔖 #Security #امنیت #Logging #X_Forwarded_For #Reverse_Proxy #OWASP #Flask #Nginx #Security #Network
👤 Developix
💎 Channel: @DevelopixNetwork
18 · 2K ·