appsec – آیا یک خطای 401 از اطلاعات نشتی API باز می شود؟

من یک API برای یک برنامه کاربردی که در حال کار است را توسعه می دهم و یک سوال جالب مطرح می کنم:

یک نقطه پایانی API را اینگونه تصور کنید:

 GET / customers / 123456

که یک شی تک مشتری را باز می کند. در حال حاضر، در سازمان ما، مشتریان می توانند به سازمان های فروش تعلق داشته باشند. هر کاربر API با یک سازمان مرتبط است و می خواهم دسترسی کاربر به مشتریان مرتبط با سازمان خود را محدود کنم.

بنابراین، با توجه به یک کاربر متعلق به سازمان ABC و مشتری 123456 که متعلق به سازمان است XYZ ، چه API باید به من نشان دهد، زمانی که این کاربر تلاش می کند تا آن مشتری را دریافت کند؟

  • 404 Not Found – اگر یک کاربر یک مشتری غیر موجود را جستجو کند، آن را 404 باز می گرداند، زیرا هیچ منبع در آن URL پیدا نشد.

  • 401 غیر مجاز – اگر پرس و جو از یک منبع که شما دسترسی ندارید، باید پاسخ "غیر مجاز" دریافت کنید.

به نظر می رسد که اگر API برای اطلاعات غیرقابل دسترسی، API 401 غیر مجاز یا مشتری های موجود از سایر سازمان ها را پیدا کند و 404 یافت نشد برای مشتری های غیر موجود باشد. به عنوان مثال، یک کاربر از سازمان ABC می تواند API را پرس و جو کند و تعیین کند که کدام شناسه های کاربر وجود دارد و چه کسی نمی باشد.

یادداشت های اضافی:

  1. شناسه های مشتری به صورت پیوسته تولید می شوند و هیچ نوع شکاف وجود ندارد، بنابراین نوع اطلاعاتی که می تواند نشت باشد:

    • کدام مشتری کد بعدی خواهد بود؟
    • چگونه تعداد مشتریان در یک دوره زمانی ایجاد شد؟
  2. سازمان های فروش معمولا به مناطق جغرافیایی خاص محدود می شوند و معمولا در رقابت مستقیم نیستند. اما بعضی از سرزمینها همپوشانی دارند و قوانینی وجود دارد که به "شکار" کردن مشتریان یکدیگر کمک کند. بنابراین، همه چیز در همه، یک محیط رقابتی محکم است که ما واقعا نمی خواهیم سازمان های فروش را در مورد مشتریان یکدیگر بدانیم.