PDA

View Full Version : یک سوال از کارشناسان امنیت



baidin
دوشنبه 07 فروردین 1396, 00:54 صبح
با سلام و احترام
قبلا وب فرم کار میکردم و مدتیه asp.net mvc دارم کار میکنم. قبلا با وب فرم سایت هم طراحی کرده ام.در حال حاضر باید یک وبسایت با امنیت بالا طراحی کنم به صورتی که امنیت به صورت عالی وجود داشته باشه. در اینترنت هم جستجو کردم ولی متاسفانه مباحثی به صورت کلیشه ای در سایت ها تکرار شده. آیا بحث امنیت در کد نویسی asp.net mvc منبع کاملی وجود نداره؟
ثانیا برای امنیت سایت خودمون واقعا همین چند نکته کلیشه ای را رعایت کنیم؟ یا دوره آموزشی مناسبی کسی اطلاع نداره که مفید باشه
خواهش میکنم دوستانی که تجربه کافی دارند پاسخ بدن چون واقعا احتیاج دارم
متشکرم

salelearningpack
دوشنبه 07 فروردین 1396, 11:44 صبح
درود بر شما دوست عزیر

امنیت در Asp.net mvc 4 به این ور به اوج خود رسید.
امنیت در لایه های مختلف باید پیاده سازی بشه مثلا :

1 - در اولین لایه در زمان اتصال پایگاه داده به صورت Database First یا EFCF در کلاس هایی که برای جداول ایجاد میشود میتوان اولین لایه ایمن سازی را انجام داد و فیلد ها را به شکلی سفارشی کردن که دسترسی و تاثیر گذاری خارج از چارچون سرویس های صحیح سایت غیر ممکن شود.
Metadata : با طراحی کلاس های Metadata برای جداول و یکسری اقدامات مکمل میتوان این امکان را فراهم کرد که مثلا اگه حتی دیتابیستون رو هک کردن شما ساختار اصلی رو از دست ندید.


2 - با Vasidation ها مثلا امکان نوشتن html در ورودی ها برای پرکردن فیلد ها امکانپذیر نباشد
مواردی مثل [ScaffoldColum()] و یا حتی یم مورد ساده مثل [AllowEmptyString()] و ...
با آشنایی کامل با این موارد و البته استفاده کامل در تمام قسمت های سایت میتوانید امنیت را به حد فوق العاده ای بالا ببرید .

علاوه بر این با همین Vadidation ها میتوان فیلد ها را با نام های غیر غابل فهم در دیتابیس ثبت کرد که اگه کسی کل دیتابیس رو هم هک کنه درواقع به کاه دون زده .

3 - شیوه ارسال اطلاعات به صورت Post و اشنایی کامل با این روش در تمام قسمت ها خصوصا JQuery Ajax خیلی مهم است و امنیت را بالا میبرد.

4 - یاد گیری و اجرای کامل model banding برای تمام انتقال اطلاعات های درون سایت برای فیلد ها و جداول پایگاه داده

[B]5 - مثلا مواردی مثل طراحی سبد خرید با دو جدول در پایگاه داه بجای کوکی و یا یکسری کدنویسی ها مرتبط با کار کردن با درگاه پرداخت الکترونیک و ... هم امنیت یک فروشگاه را بالا میبرد

6 - و خیلی خیلی موارد دیگه که شما قطعا باید همه رو یک بار در طی طراحی یک پروژه و یک دوره جامع ببینید و خودتون انجام بدید تا تسلط کامل یابید و بعدش انجام دادش براتون ساده و حتی لذت بخش خواهد بود .

plc1361
جمعه 11 فروردین 1396, 23:50 عصر
تبلیغات ممنوع

hakim22
یک شنبه 13 فروردین 1396, 09:04 صبح
به طور کلی امنیت یک تخصص جدا از برنامه نویسی وب است. برای به حداکثر رساندن ضریب امنیتی یک سایت حتما باید از متخصصین امنیت وب مشاوره بگیرید.

مهم اینه که سایت شما در برابر ساده ترین و معمول ترین روشهای هک آسیب پذیر نباشه.
لینک زیر شامل 10 روش حملات اینترنتی در سال 2013 است که از یک منبع آماری معتبر تهیه شده. و این موسسه هر سه سال لیست جدیدی منتشر میکنه.
شاید ترتیب موارد تغییر کنه ولی در چند سال گذشته همیشه همین ده مورد در لیست وجود داشتن.

https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project

کتابی که در لینک هست دانلود کنید تا شرح دقیقی از نحوه ی هر کدام از هک ها و روشهای پیشگیری از اون رو به شما آموزش بده.

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

baidin
سه شنبه 15 فروردین 1396, 19:16 عصر
به طور کلی امنیت یک تخصص جدا از برنامه نویسی وب است. برای به حداکثر رساندن ضریب امنیتی یک سایت حتما باید از متخصصین امنیت وب مشاوره بگیرید.

مهم اینه که سایت شما در برابر ساده ترین و معمول ترین روشهای هک آسیب پذیر نباشه.
لینک زیر شامل 10 روش حملات اینترنتی در سال 2013 است که از یک منبع آماری معتبر تهیه شده. و این موسسه هر سه سال لیست جدیدی منتشر میکنه.
شاید ترتیب موارد تغییر کنه ولی در چند سال گذشته همیشه همین ده مورد در لیست وجود داشتن.

https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project

کتابی که در لینک هست دانلود کنید تا شرح دقیقی از نحوه ی هر کدام از هک ها و روشهای پیشگیری از اون رو به شما آموزش بده.

این قدم بسیار خوبی برای شروع است. 80 درصد حملات اینترنتتی بر اساس همین 10 روش صورت میگیرد و تعجب می کنید که سایتهای معروف و معتبر زیادی در دنیا در سال گذشته همچنان توسط یکی از همین 10 روش هک شدند.
بسیار متشکرم
در حال حاضر یک ایده ای راجع به طراحی دارم و ممنون میشم دوستان راهنمایی کنند
فرض کنید وب سایت ما تعدادی مدیر مشخص داشته باشد. آیا برای امنیت بالاتر بهتر نیست قسمت مدیریت و درج مطلب در سایت را به صورت لوکال طراحی کنیم یک روش اجرای سایت در iis ویندوز هست یا طراحی یک ویندوز فرم اپلیکیشن هست. در ادامه مدیران با برنامه لوکال کار میکنن و اطلاعات وارد شده در بانک اطلاعاتی وب سایت درج بشه.طبیعتا کانکشن استرینگ را کافیه کانکشن استرینگ بانک وب سایت بدیم.
آیا به نظر اساتید این روش از لحاظ امنیتی بهتر نیست؟ به این دلیل که در هاست عملا هیچ پنلی برای تراکنش نیست تا هکر ها از آن طریق نفوذکنند
متشکرم

baidin
سه شنبه 22 فروردین 1396, 02:08 صبح
بسیار متشکرم
در حال حاضر یک ایده ای راجع به طراحی دارم و ممنون میشم دوستان راهنمایی کنند
فرض کنید وب سایت ما تعدادی مدیر مشخص داشته باشد. آیا برای امنیت بالاتر بهتر نیست قسمت مدیریت و درج مطلب در سایت را به صورت لوکال طراحی کنیم یک روش اجرای سایت در iis ویندوز هست یا طراحی یک ویندوز فرم اپلیکیشن هست. در ادامه مدیران با برنامه لوکال کار میکنن و اطلاعات وارد شده در بانک اطلاعاتی وب سایت درج بشه.طبیعتا کانکشن استرینگ را کافیه کانکشن استرینگ بانک وب سایت بدیم.
آیا به نظر اساتید این روش از لحاظ امنیتی بهتر نیست؟ به این دلیل که در هاست عملا هیچ پنلی برای تراکنش نیست تا هکر ها از آن طریق نفوذکنند
متشکرم

ممنون میشم راهنمایی کنید
متشکرم

hakim22
سه شنبه 22 فروردین 1396, 10:06 صبح
1- در این صورت برنامه ی شما دیگر تحت وب نیست و از هر جایی قابل دسترسی نیست و روی سیستم عامل های مختلف (مثلا گوشی موبایل) قابل ارسال مطلب نیست.
2- یک هکر می تونه به سیستم یکی از آن مدیران نفوذ کنه و از طریق اون سایت رو هک کنه. اتفاقا این روش در بسیاری از حالت ها ساده تر هم هست چون برنامه های زیادی روی یک سیستم نصب میشه
3- در ASP اگر از Identity استفاده کنید تمامی استانداردهای لازم امنیتی را در پیاده سازی رعایت کرده اید. در گام بعدی یک سری موارد هست که باید در نظر بگیرید که در همه ی منابع آموزشی توضیحات آن یافت میشود.
4 - به نظرم بهتره شما سایت رو تحت وب با استفاده از حداقل موارد امنیتی پیاده سازی کنید و بعد از اینکه پروژه ی شما راه اندازی شد می توانید روی تقویت امنیت سایت کار کنید. در بدترین حالت یک متخصص امنیت را استخدام می کنید که سطح امنیتی را بالا ببرد.
هنوز هم معلوم نیست ایده ی شما بازگشت سرمایه داشته باشد.پس روی پیاده سازی ایده با در نظر گرفتن روش های عمومی امنیت تمرکز کنید و در ادامه ی کار وقتی ایده به طور کامل پیاده شد روی تقویت سطح امنیتی کار کنید.

baidin
شنبه 02 اردیبهشت 1396, 03:04 صبح
1- در این صورت برنامه ی شما دیگر تحت وب نیست و از هر جایی قابل دسترسی نیست و روی سیستم عامل های مختلف (مثلا گوشی موبایل) قابل ارسال مطلب نیست.
2- یک هکر می تونه به سیستم یکی از آن مدیران نفوذ کنه و از طریق اون سایت رو هک کنه. اتفاقا این روش در بسیاری از حالت ها ساده تر هم هست چون برنامه های زیادی روی یک سیستم نصب میشه
3- در ASP اگر از Identity استفاده کنید تمامی استانداردهای لازم امنیتی را در پیاده سازی رعایت کرده اید. در گام بعدی یک سری موارد هست که باید در نظر بگیرید که در همه ی منابع آموزشی توضیحات آن یافت میشود.
4 - به نظرم بهتره شما سایت رو تحت وب با استفاده از حداقل موارد امنیتی پیاده سازی کنید و بعد از اینکه پروژه ی شما راه اندازی شد می توانید روی تقویت امنیت سایت کار کنید. در بدترین حالت یک متخصص امنیت را استخدام می کنید که سطح امنیتی را بالا ببرد.
هنوز هم معلوم نیست ایده ی شما بازگشت سرمایه داشته باشد.پس روی پیاده سازی ایده با در نظر گرفتن روش های عمومی امنیت تمرکز کنید و در ادامه ی کار وقتی ایده به طور کامل پیاده شد روی تقویت سطح امنیتی کار کنید.
بابت زمانی که گذاشتید متشکرم
اجازه بدید یکم از شرایط موجود عرض کنم
تعدادی برنامه تحت شبکه لوکال داریم که 24 ساعته فعال هستند و به دلیل نیاز هر لحظه به این نرم افزارها به هیچ عنوان نمیتونیم ببریم تحت وب زیرا به محض اینکه کوچکترین مشکلی در کانکشن اینترنت بیاد ما نمیتونیم از نرم افزاهامون موجود استفاده کنبم و به همین دلیل بردن تمام برنامه ها تحت وب امکان نیست
پس شبکه اصلی ما لوکال و دیتابیس ما لوکال خواهد بود
منتهی ما میخواهیم یک ثبت نام هایی تحت وب انجام بدیم که این ثبت نام ها در سرور لوکال قابل مشاهده باشه. پس :
اول اینکه الزاما بانک و نرم افزارها لوکال هستند
دوم ما باید قابلیت ثبت نام اینترنتی داشته باشیم که البته این قابلیت دوم از لحاظ اولویت پایین تر از قسمت اول هست
یک ایده استفاده از رپلیکیشن هستش
اول اینکه بانک اطلاعاتی لوکال هست
نرم افزارها لوکال هستند
ثانیا تحت وب هم ثبت نام ها انجام میشه
بحث پستهای قبلی من اینجاست:
در این شرایط که ما اطلاعات بانک تحت وب را بفرستیم به بانک لوکال آیا بهتر نیست برای امنیت بیشتر پنل مدیریتی وبسایت را لوکال طراحی کنیم؟

baidin
پنج شنبه 07 اردیبهشت 1396, 23:50 عصر
بابت زمانی که گذاشتید متشکرم
اجازه بدید یکم از شرایط موجود عرض کنم
تعدادی برنامه تحت شبکه لوکال داریم که 24 ساعته فعال هستند و به دلیل نیاز هر لحظه به این نرم افزارها به هیچ عنوان نمیتونیم ببریم تحت وب زیرا به محض اینکه کوچکترین مشکلی در کانکشن اینترنت بیاد ما نمیتونیم از نرم افزاهامون موجود استفاده کنبم و به همین دلیل بردن تمام برنامه ها تحت وب امکان نیست
پس شبکه اصلی ما لوکال و دیتابیس ما لوکال خواهد بود
منتهی ما میخواهیم یک ثبت نام هایی تحت وب انجام بدیم که این ثبت نام ها در سرور لوکال قابل مشاهده باشه. پس :
اول اینکه الزاما بانک و نرم افزارها لوکال هستند
دوم ما باید قابلیت ثبت نام اینترنتی داشته باشیم که البته این قابلیت دوم از لحاظ اولویت پایین تر از قسمت اول هست
یک ایده استفاده از رپلیکیشن هستش
اول اینکه بانک اطلاعاتی لوکال هست
نرم افزارها لوکال هستند
ثانیا تحت وب هم ثبت نام ها انجام میشه
بحث پستهای قبلی من اینجاست:
در این شرایط که ما اطلاعات بانک تحت وب را بفرستیم به بانک لوکال آیا بهتر نیست برای امنیت بیشتر پنل مدیریتی وبسایت را لوکال طراحی کنیم؟
دوستان در این زمینه مورد مشابهی نداشتند،؟

asemaneiran
یک شنبه 14 خرداد 1396, 10:34 صبح
سلام
من یک سایت asp اپلود کردم
میخواستم بدونم برای اینکه کدهام به سرقت نره و یا سایتم هک نشه یا بانک اطلاعاتی ام دستکاری نشه باید چکار کنم
خواهش می کنم کمکم کنید

Moien Tajik
یک شنبه 14 خرداد 1396, 12:23 عصر
کدهام به سرقت نره
میتونید از ابزارهایی مثل Smart Assembly استفاده کنید تا DLL های پروژتون رو Obfuscate کنید و از کدهاتون محافظت کنید .


سایتم هک نشه یا بانک اطلاعاتی ام دستکاری نشه
هک شدن سایتتون کاملا بستگی به کدی شما مینویسید داره و ASP.NET MVC بطور پیشفرض امنیت مناسبی داره ( Identity ) اما باید دسترسی هارو بدرستی برای کاربران قرار بدید و مسائل دیگه رو رعایت کنید که به تدریج با این موارد آشنا خواهید شد ، این آموزش میتونه برای شروع مناسب باشه : http://git.ir/tag/master-detail-workflow-apps-with-ef-mvc-identity-2-and-modals/

asemaneiran
دوشنبه 15 خرداد 1396, 09:17 صبح
سلام
ممنون از راهنمایی تون
ببخشید هنگام اپلود فایل هام روی هاست باید تمام فایل ها رو بزارم؟
منظورم اینه نمیشه کاری کرد که کدهام قابل دسترس نباشه؟
dll ندارم
فقط کدهام رو چطور حفظ کنم
ممنون میشم لطف کنید راهنمایی کنید
(در صورت استفاده از اسمارت اسمبلی چطور فایل ها رو اپلود کنم مشکلی در اجرا پیش نمیاد)

Moien Tajik
دوشنبه 15 خرداد 1396, 10:28 صبح
ببخشید هنگام اپلود فایل هام روی هاست باید تمام فایل ها رو بزارم؟
بله همه ی کدها نیاز هستش که آپلود بشن ، بالاخره پروژه نیاز داره به همه ی فایل ها و DLL های وبسایت تا بدرستی کار کنه .


dll ندارم
امکان نداره DLL نداشته باشید ، کدهای پروژتون بعد از Compile داخل DLL ذخیره میشه ( به اسم نام پروژتون )


(در صورت استفاده از اسمارت اسمبلی چطور فایل ها رو اپلود کنم مشکلی در اجرا پیش نمیاد)
مثل حالت معمولی ، شما وقتی یک DLL به Smart Assembly میدید ، خروجی هم یک DLL میگیرید که بجای استفاده از DLL اصلی پروژه از این رو Replace میکنید و همراه با بقیه فایل های پروژه آپلودش میکنید .

asemaneiran
دوشنبه 15 خرداد 1396, 11:12 صبح
خیلی ممنونم:تشویق:
من فقط فایل ها با پسوند aspx دارم و یک سری پوشه bin . app code . appdata و غیره
dll ندارم!
راهی هست که مثلا کوئری های sql ام یا کدهای اتصال به بانکم هک نشه؟
ممنون

Moien Tajik
دوشنبه 15 خرداد 1396, 11:45 صبح
خیلی ممنونم:تشویق:
من فقط فایل ها با پسوند aspx دارم و یک سری پوشه bin . app code . appdata و غیره
dll ندارم!
راهی هست که مثلا کوئری های sql ام یا کدهای اتصال به بانکم هک نشه؟
ممنون

شما اول باید از پروژتون Publish بگیرید ، داخل فولدر Bin میتونید dll های پروژتون رو پیدا کنید و با Smart Assembly اون ها رو Obfuscate کنید و جایگزین فایل اصلی بکنید و روی هاستتون آپلودشون کنید .

asemaneiran
سه شنبه 16 خرداد 1396, 10:29 صبح
ممنون چک میکنم خبر میدم