Skip to content

Security: ramin40686/GitRelayFox

Security

docs/security.md

Security

این پروژه عمداً روی موارد امنیتی زیر تمرکز دارد:

1) ضد SSRF + allowlist

قبل از هر عملیات (fetch / render / createSession)، URL بررسی می‌شود:

  • فقط http/https
  • عدم پذیرش username/password داخل URL
  • کنترل allowlist بر اساس hostname
    • پشتیبانی از wildcard به شکل *.example.com
  • DNS resolve و جلوگیری از resolve شدن به IPهای داخلی/رزرو شده
    • private, loopback, linkLocal, uniqueLocal, CGNAT, reserved, multicast, unspecified

کد مرتبط:

  • /workspace/backend/src/security/ssrf.ts

2) کنترل درخواست‌های subresource در Playwright

در render و session:

  • context.route("**/*", ...) برای هر request اجرا می‌شود
  • اگر URL آن request خارج از allowlist باشد، request abort می‌شود

کد مرتبط:

  • /workspace/backend/src/modes/renderMode.ts
  • /workspace/backend/src/sessions/sessionManager.ts

3) امن‌سازی HTML خروجی (Render)

HTML خروجی برای نمایش به کلاینت:

  • rewrite کردن src/href به absolute
  • sanitize با sanitize-html (حذف script و handlerهای on* و …)

کد مرتبط:

  • /workspace/backend/src/modes/renderMode.ts

4) توصیه‌های عملیاتی

  • در محیط تولید: ALLOWLIST_ALL را هرگز روشن نکنید.
  • allowlist را محدود و دقیق تعریف کنید.
  • نرخ فریم stream را محدود نگه دارید (پیش‌فرض 5fps، سقف 15fps).
  • اگر قرار است این سرویس به اینترنت عمومی متصل شود:
    • احراز هویت روی WS/HTTP اضافه کنید (مثلاً token)
    • rate limit و محدودیت همزمانی قرار دهید

There aren't any published security advisories