CSRF میزبانی حفاظت دروپال
من به برخی از اسکریپت های PHP POST که من نیاز به محافظت از حملات CSRF و سوالات چند:
1) اگر من ارائه درخواست POST به پی اچ پی با استفاده از جی کوئری بدون یک فرم HTML، فقط می شود گرفتن ارزش به طور مستقیم از عناصر HTML و ارائه آنها را با استفاده از جی کوئری، من هنوز در معرض خطر CSRF؟
2) هنگامی که یک کاربر سیاهههای مربوط به وب سایت، من در یک متغیر جلسه ذخیره رمز منحصر به فرد است. در پی اچ پی اسکریپت POST من چک کنید در صورتی که متغیر جلسه قرار است دارای همان ارزش من قبل از تنظیم و. این است که کافی نیست؟ چرا آن را مورد نیاز برای این رمز به در فرم HTML گنجانده است؟
نوامبر 15 '14 در 23:43 خواسته
- بله. مهم نیست که چگونه می توانید به درخواست ساخت، مهاجم می تواند یکی در همان راه ساخت. (در تئوری شما می توانید ویژگی های یک درخواست پیچیده (که یک درخواست قبل از شروع پرواز CORS ماشه) اجباری، به طوری که یکی دیگر از سایت می تواند مرورگر کاربر می کنید به کپی طیف درخواست را، اما من نمی خواهم به بستگی دارد بر روی آن) .
- خیر
نکته از این رمز است به بررسی کنید که صفحه که شامل کد مسئول تصمیم گیری آنچه که می رود در درخواست (به عنوان مثال شکل و یا جاوا اسکریپت) یک صفحه در وب سایت شما است.
اگر فرم (یا جاوا اسکریپت) می توانید یک نشانه (که منطبق بر یک در جلسه) از HTML صفحه را خوانده و آن را در صورت درخواست، سپس شما می دانید کد که درخواست ساخته آمد از سایت شما.
اگر شما فقط بررسی کنید که آن را در جلسه است، پس از آن همه شما در حال بررسی است که کاربر باعث شده است که یک نشانه به تولید می شود (که معمولا فقط به معنی هر صفحه از دیدن در سایت شما ... که می تواند در یک قاب پنهان باشد).
خوب. چه اگر مهاجم است JS است که می تواند به شکل واقعی HTML از وب سایت من را به یک iFrame مخفی باشد. من آن را در یک مثال دیگر را دیده اند، نه این نشانه رمز توان در قالب شامل در صورتی که کاربر بازدید وب سایت مهاجم در حالی که در سیستم وارد شده؟ در این مورد درخواست می شود معتبر به عنوان رمز وجود دارد در فرم و در جلسه یا من چیزی از دست رفته؟ - مایکل ساموئل نوامبر 15 '14 در 23:58
خیر، اگر یک قاب قرار داده در داخل یک فرم، زمینه ها در صفحه بارگذاری شده توسط قاب خواهد شد در داده های فرم را شامل نمی شود. شما نمی توانید داده ها در سراسر دامنه از طریق یک قاب با جاوا اسکریپت به عنوان خوانده شده (مگر اینکه سایت همکاری با postMessage، که شما نمی خواهد). - کوئنتین نوامبر 16 '14 در 00:02
بله هنوز هم نا امن
نشانه CSRF باید یک نشانه تازه تولید شده برای هر بار تولید یک فرم باشد. لازم به منحصر به فرد و غیر قابل پیش بینی برای هر درخواست. نشانه جلسه مجموعه ای از ورود فقط برای کل جلسه وارد منحصر به فرد است.
و اگر شما این نشانه رمز تولید شده به بررسی ارسال کنید، جایی که شما آن را چک کنید؟ شما مطابقت رمز جلسه با. به همین دلیل است زیرا شما هنوز هم می تواند مردم این امکان را برای انجام یک جعل درخواست را، در صورتی که رمز است با درخواست خود را ارسال نمی کند، اما تمام چک توسط جلسه / کوکی ها انجام می شود. اگر شما تنها به بررسی جلسه هیچ کاری نمی کند در برابر CSRF. این نیاز به در درخواست خود را ارسال می شود و بررسی می شود اگر آن را منطبق جلسه خود را. هنگامی که شما ایجاد یک نشانه منحصر به فرد برای هر درخواست، بچه ها بد می تواند درخواست کسی ایجاد نمی کند.
پاسخ نوامبر 15 '14 در 23:55