PDA

View Full Version : بالا بردن امنیت سایتهای طراحی شده با ASP CORE



rahmatipoor
سه شنبه 20 آذر 1397, 12:10 عصر
با عرض سلام

من توی بحث طراحی سایت تازه کار هستم و قصد دارم با ASP Core 2.1 سایتی رو طراحی کنم .

با توجه به اینکه احتمالا اطلاعات مهمی قراره ذخیره بشه و در صورت لو رفتن و یا هک شدن باعث ایجاد مشکلات زیادی میشه میخواستم بدونم که برای بالا بردن امنیت سایت موقع طراحی و همچنین قبل و بعد از انتشار سایت چه مواردی رو باید درنظر بگیریم.

البته میدونم سوالم خیلی کلی هست ولی یک نمونه چک لیست برای ASP .NET MVC توی این لینک (https://www.dotnettips.info/post/1095/%da%86%da%a9-%d9%84%db%8c%d8%b3%d8%aa-%d8%aa%d9%87%db%8c%d9%87-%db%8c%da%a9-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-asp-net-mvc) درج شده. میخواستم بدونم که آیا این طور موردی برای asp core هم وجود داره؟

کلا شما چه مواردی رو در نظر می گیرید که سایت با مشکل امنیتی (هک، سرقت بانک اطلاعاتی و ... ) روبرو نشه

با تشکر

rahmatipoor
چهارشنبه 21 آذر 1397, 12:50 عصر
دوستان جواب نمیدن پس حتما راهی نداره :متفکر:

rahmatipoor
پنج شنبه 22 آذر 1397, 13:53 عصر
؟؟؟؟؟؟؟؟؟؟؟؟

rahmatipoor
دوشنبه 03 دی 1397, 11:18 صبح
ظاهرا کسی نیست جواب بده. ولی مشکلی نیست من سوالهام رو یکی یکی می پرسم. امیدوارم کسی پاسخ بده.

نظرتون چیه که برای فیلد id جداول بانک اطلاعاتی ، از guid به جای int استفاده کنیم . همون طوری که identity این کار رو انجام داده.

hamid_hr
دوشنبه 03 دی 1397, 14:11 عصر
برای id بهتره از مقادیر عددی استفاده بشه. این فیلد توی همه ی join ها شرکت میکنه(البت) و برای مقایسه راحتترین مقایسه بین دو عدد انجام میشه و محاسبات کمتری داره.

rahmatipoor
دوشنبه 03 دی 1397, 21:11 عصر
برای id بهتره از مقادیر عددی استفاده بشه. این فیلد توی همه ی join ها شرکت میکنه(البت) و برای مقایسه راحتترین مقایسه بین دو عدد انجام میشه و محاسبات کمتری داره.

تشکر از شما

از باب امنیت گفتم. اگه id از نوع int باشه (فرض کنید توی جدول تراکنش های مالی) ، یکی که بخواد توی سایت خرابکاری کنه میتونه id های بعدی رو هم حدس بزنه ولی اگه از نوع guid باشه نمیتونه

سوال اینه که آیا اگه فرد خرابکار آی دی ها رو بدونه اصولا میتونه کاری انجام بده ؟ البته میدونم که asp core سیستم تشخیص درخواستهای تقلبی ( anti forgery token ) رو داره

این مطلب رو هم با توجه به سیستمی که خود identity پیاده کرده میگم. سیستم identity ای دی جداول user و role رو به صورت guid پیاده کرده

hakim22
چهارشنبه 05 دی 1397, 12:42 عصر
به طور کلی کار کردن با String برای پروژه وب خوب نیست، متغیرهای string از نوع immutable هستند و در حافظه انباشتگی ایجاد میکنن، در Identity از این روش استفاده شده چون میخواستن کلی ترین حالت ممکن رو در نظر بگیرن، شما می توانید به راحتی پیش فرض رو تغییر بدید و به int برگردونید.

اصلا مهم نیست که شما id به کاربر نشون بدید، پنهان کنید و حتی از anti-forgery استفاده کنید. داده هارو باید در سمت سرور قبل از استفاده دوباره چک کنید و مطمئن بشید که اصالت دارن. پیاده سازی یک سایت که ایمن باشه و پرفورمنس بالایی داشته باشه همیشه یک چالشه

r4hgozar
چهارشنبه 12 دی 1397, 18:50 عصر
تشکر از شما

از باب امنیت گفتم. اگه id از نوع int باشه (فرض کنید توی جدول تراکنش های مالی) ، یکی که بخواد توی سایت خرابکاری کنه میتونه id های بعدی رو هم حدس بزنه ولی اگه از نوع guid باشه نمیتونه

سوال اینه که آیا اگه فرد خرابکار آی دی ها رو بدونه اصولا میتونه کاری انجام بده ؟ البته میدونم که asp core سیستم تشخیص درخواستهای تقلبی ( anti forgery token ) رو داره


این مطلب رو هم با توجه به سیستمی که خود identity پیاده کرده میگم. سیستم identity ای دی جداول user و role رو به صورت guid پیاده کرده


سلام.
من جوابتون رو از نظر کسی می دم که مدتی امنیت کار کرده.
من برای هک کردن صفحه شما نیاز به این ندارم که ایدی شماره حذف کنم و ا حدس بزنم با نرم افزار به راحتی در میاد.
بهترین کار اینه که شما مقداری رو داشته باشید که از 2 سرف چک بشه که همونظور که دوستان گفتن در اینجا می تونید از antifortoken استفاده کنید.

rahmatipoor
پنج شنبه 13 دی 1397, 10:08 صبح
داده هارو باید در سمت سرور قبل از استفاده دوباره چک کنید و مطمئن بشید که اصالت دارن.

چطوری باید چک کنیم؟ به جز Anti Forgery Token چه راهکار دیگه ای هست.

اجازه بدید روال کلی کار رو توضیح بدم .

قراره یک نرم افزار تحت وب طراحی بشه ( فرض کنید نرم افزار حسابداری ) که کاربرها به صور عمومی بیان اونجا ثبت نام کنند و از برنامه استفاده کنند. کاربرها مربوط به یک شرکت خاص نیستند. هر کسی میتونه ثبت نام کنه و از برنامه استفاده کنه.
با توجه به اینکه اطلاعات حسابداری همه کاربرها توی یک جدول ذخیره میشه که بر اساس id کاربر از همدیگه متمایز میشن، چطوری از دسترسی یک کاربر به اطلاعات کاربرهای دیگه جلوگیری کنیم مثلا موقع حذف اطلاعات چطوری مطمئن بشیم که کاربر داده ای رو که میخواد حذف کنه واقعا مربوط به خودش هست و داده کاربرهای دیگه رو حذف نمیکنه. Anti Forgery Token یا راهکار دیگه؟

rahmatipoor
پنج شنبه 13 دی 1397, 10:12 صبح
سلام.
من جوابتون رو از نظر کسی می دم که مدتی امنیت کار کرده.
من برای هک کردن صفحه شما نیاز به این ندارم که ایدی شماره حذف کنم و ا حدس بزنم با نرم افزار به راحتی در میاد.
بهترین کار اینه که شما مقداری رو داشته باشید که از 2 سرف چک بشه که همونظور که دوستان گفتن در اینجا می تونید از antifortoken استفاده کنید.

سلام ممنون از شما.

میشه بفرمائید که از نظر شما برای جلوگیری از هک شدن نرم افزارهای بانک اطلاعاتی آنلاین چه مواردی رو در نظر بگیریم؟ میدونم که خیلی موارد هست ولی به صورت کلی بفرمائید که چه مواردی رو در نظر بگیریم که امنیت سایتمون بیشتر بشه

همونطوری که توی پست اول گفتم یک چک لیست برای ASP MVC توی این لینک هست. آیا این طور موردی برای ASP CORE هم هست یا خود همون برای core هم معتبره ؟

چک لیست موارد امنیتی برای ASP mvc (https://www.dotnettips.info/post/1095/%da%86%da%a9-%d9%84%db%8c%d8%b3%d8%aa-%d8%aa%d9%87%db%8c%d9%87-%db%8c%da%a9-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-asp-net-mvc)

پیشاپیش ممنون از راهنماییهای شما و دوستان عزیز

r4hgozar
پنج شنبه 13 دی 1397, 23:03 عصر
سلام
در گام اول چیز هایی که خود مایکروسافت گفته رو پیاده کنید
https://docs.microsoft.com/en-us/aspnet/core/security/?view=aspnetcore-2.2

در گام دوم 2 دوره برای امنیت و صفحات وب هست

دوره sec542
https://www.sans.org/course/web-app-penetration-testing-ethical-hacking

و دوره sec 642 که مربوط به کمانی snas هست
می تونید این ها رو مطالعه کنید.
تست وب و امنیت کد ها یک چیز استاتیک نیست که بتونید به راحتی اعمال کنید.
بسته به فریم ورک ها و پلاگین و تکنولوژی هایی که دارین توکد ها استفاده می کنید باید همون روش ها رو امن کنید
اون چک لیست رو هم که دادین خیلی ها رو شاید شما در پروژتون استفاده نکنید.
موفق باشید