# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > ASP.NET Core >  بالا بردن امنیت سایتهای طراحی شده با ASP CORE

## rahmatipoor

با عرض سلام

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

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

البته میدونم سوالم خیلی کلی هست ولی یک نمونه چک لیست برای ASP .NET MVC توی این لینک درج شده. میخواستم بدونم که آیا این طور موردی برای asp core هم وجود داره؟

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

با تشکر

----------


## rahmatipoor

دوستان جواب نمیدن پس حتما راهی نداره   :متفکر:

----------


## rahmatipoor

؟؟؟؟؟؟؟؟؟؟؟؟

----------


## rahmatipoor

ظاهرا کسی نیست جواب بده. ولی مشکلی نیست من سوالهام رو یکی یکی می پرسم. امیدوارم کسی پاسخ بده.

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

----------


## hamid_hr

برای  id بهتره از مقادیر عددی استفاده بشه. این فیلد توی همه ی join ها شرکت میکنه(البت) و برای مقایسه راحتترین مقایسه بین دو عدد انجام میشه و محاسبات کمتری داره.

----------


## rahmatipoor

> برای  id بهتره از مقادیر عددی استفاده بشه. این فیلد توی همه ی join ها شرکت میکنه(البت) و برای مقایسه راحتترین مقایسه بین دو عدد انجام میشه و محاسبات کمتری داره.


تشکر از شما

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

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

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

----------


## hakim22

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

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

----------


## r4hgozar

> تشکر از شما
> 
> از باب امنیت گفتم. اگه id از نوع int باشه (فرض کنید توی جدول تراکنش های مالی) ، یکی که بخواد توی سایت خرابکاری کنه میتونه id های بعدی رو هم حدس بزنه ولی اگه از نوع guid باشه نمیتونه
> 
> سوال اینه که آیا اگه فرد خرابکار آی دی ها رو بدونه اصولا میتونه کاری انجام بده ؟ البته میدونم که asp core سیستم تشخیص درخواستهای تقلبی ( anti forgery token ) رو داره
> 
> 
> این مطلب رو هم با توجه به سیستمی که خود identity پیاده کرده میگم. سیستم identity ای دی جداول user و role رو به صورت guid  پیاده کرده



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

----------


## rahmatipoor

> داده هارو باید در سمت سرور قبل از استفاده دوباره چک کنید و مطمئن بشید که اصالت دارن.


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

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

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

----------


## rahmatipoor

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


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

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

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

چک لیست موارد امنیتی برای ASP mvc

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

----------


## r4hgozar

سلام 
در گام اول چیز هایی که خود  مایکروسافت گفته رو پیاده کنید
https://docs.microsoft.com/en-us/asp...aspnetcore-2.2

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

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

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

----------

