برنامه وب – چرا درخواست های POST متقابل دامنه اجازه داده می شود؟

من درک می کنم که بهترین روش استفاده از نشانه ها برای جلوگیری از CSRF است، اما چرا مرورگرها به جای درخواست POST متقابل سایت اجازه می دهند؟ به نظر می رسد که دادن احزاب غیر قابل اعتماد امکان دسترسی نوشتاری به سرور شما یک ایده بد است.

سایت W3 می گوید: "تحت یک سیاست مبدا، ارسال اطلاعات متقابل سایت نیز خطرناک است زیرا حملات مانند متقابل، جعل تقلب در سایت (CSRF) و clickjacking. خط مشی همان مبدا نمی تواند این آسیب پذیری های امنیتی را به همان شیوه ای که در اطراف دریافت اطالعات قرار دارد، رد کند چرا که ممنوعیت ارسال متقابل سایت از طریق لینک های متقابل سایت ممنوع است. " [1]

اما این به نظر می رسد مثل دوگانگی دروغین است. ما می توانیم POST های متقارن را مجاز کنیم در حالی که هنوز هم اجازه می دهیم لینک هایی که GET دریافت می کنند.

[1] https://www.w3.org/Security/wiki/Same_Origin_Policy

همان سیاست مبدأ – آیا CORS و CSRF-tokens فقط برای درخواست های POST و GET است؟

سوالات زیر را در رابطه با CSRF، SOP و CORS مطرح می کنم.

  1. آیا نشانه های CSRF تنها از ارسال فرم با روش POST یا GET محافظت می کنند؟ آیا این فقط یک "معمول" است (با توجه به این واقعیت که تنها ارسال های ارسالی آسیب پذیر هستند مانند مثال درخواست POST برای انتقال وجوه در یک وب سایت بانکداری وب)

  2. آیا CORS تنها در صورت درخواست محتوای با GET موجود است روش و نه با POST؟ اگر یک فرم با استفاده از نشانه CSRF محافظت شده باشد، در این صورت هیچ نگرانی در مورد CORS برای ایجاد چنین درخواست (به معنی ارسال فرم از یک دامنه متفاوت) وجود ندارد؛ به این دلیل که حتی با فعال شدن CORS، یک نشانه CSRF از این محتوا محافظت می شود (حتی اگر این یک مورد معمول استفاده از نشانه CSRF نیست)

  3. آیا CORS بر اساس چک کردن سرصفحه مبدأ به دلیل این واقعیت است که مرورگر قربانی را نمی توان به دروغ گویی سرچشمه مبدأ فریب داد؟ در حالی که CURL ما را قادر به فریب دادن هدرها می کند، در این حمله خاص مرورگر قربانی نمی تواند فریب خورده باشد؟

من پست های مختلفی را در رابطه با بالا خوانده ام، اما توضیح واضح تر را دوست دارم. به عنوان مثال من این را خوانده ام:

با این حال، بارگیری منابع از میزبان های دیگر مانند تصاویر، اسکریپت ها، شیوه نامه ها، فریم ها، فرم های ارسال و غیره به این محدودیت محدود نمی شود

چه چیزی باعث دلگرمی من است فکر می کنم این است که اکثر موضوعات در مورد CSRF نشانه تنها در نمونه هایی با فرم ها و ارسال داده ها با روش POST به یک سرور مشخص می شود و بر روی تصویر بزرگ تر توضیح نمی دهد.

HTTP – Wireshark POST بسته حاوی عنوانی فرم واکنش "پاسخ" است

بنابراین من بسته های خود را می گیرم تا ببینم چگونه وب سایت تست گذرواژه ها را از کلاینت به سرور منتقل می کند (من مطمئن هستم که اگر امن باشد یا من بتوانم رمز عبور را بگیرم)

این همان چیزی است که خروجی به نظر می رسد :

 HTML Form URL Encoded: application / x-www-form-urlencoded
آیتم فرم: "response" = "5523e365-b82892b7e35bdabcce618d52b6c6d80c"
    کلید: پاسخ
    ارزش: 5523e365-b82892b7e35bdabcce618d52b6c6d80c
آیتم فرم: "lp" = ""
    کلید: lp
    ارزش:
آیتم فرم: "username" = ""
    کلید: نام کاربری
    ارزش:

در حال حاضر من تعجب که در آن رمز عبور منتقل شده و این چیزی است که "پاسخ" برای.