توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آموزشی حمله به برنامه های وب سایتها
آبجی
4th November 2009, 10:24 AM
از یک دید امنیت شبیه جنگی تمام عیار است که هر روز و در تمام ساعات و لحظات ادامه دارد. بسیاری از آسیب پذیریها در سیستمهای نرمافزاری توسط توسعه دهندگانی ایجاد میشود که دانش اندکی در رابطه با نکات یا تهدیدات امنیتی دارند و نمیدانند که کدهایی که تولید میکنند تا چه حد آسیبپذیر است.
میزان استفاده از برنامههای وب سایت برای مدیریت تجارت و جذب مشتریهای جدید از طریق اینترنت در شرکتهای مختلف در حال افزایش است و به این ترتیب بازار قابل توجهی برای متخصصین توسعه این گونه سیستمها بوجود آمده است. مزیت اصلی در استفاده از تجارت مبتنی بر وب برای شرکتهای مختلف در این است که میتوانند با استفاده از حداقل امکانات پیام خود را به مشتریان بازار در سراسر دنیا برسانند. وب طیف مخاطبان وسیعی را پوشش میدهد، این نکته با وجودی که یک ایدهآل تجاری است ولی میتواند اهداف شرکت را نیز به مخاطره بیندازد زیرا مشخص نیست که چه کسانی سایت شرکت را مشاهده میکنند. بینندگان سایت علاوه بر شرکای تجاری و مشتریان میتوانند کاربران بدخواهی باشند که با اهداف خرابکارانه در پی نفوذ به سیستم میباشند.
در این مقاله نقاط آسیب پذیری رایج مورد بررسی قرار میگیرند و راههایی که کاربران میتوانند از طریق آن برنامهها را تهدید کنند معرفی میشوند.
آبجی
4th November 2009, 10:25 AM
بسیاری از برنامههای وبی اطلاعاتی را از کاربر دریافت میکنند و پس از پردازش این اطلاعات بر مبنای الگوریتمهای خود نتایجی را تولید میکنند. به عنوان مثال برنامه یک فرم جستجوی ساده را در اختیار کاربر قرار میدهد که عبارت جستجو در آن وارد شده و پس از جستجو در پایگاه داده نتایجی تولید و برای کاربر نمایش داده میشود. این فرایند یک نمونه عملکرد بسیار رایج است که در بسیاری از برنامههای وبی مشاهده میشود.
در صورتی که کاربری اهداف خرابکارانه داشته باشد ممکن است بتواند با وارد کردن یک عبارت جستجو ثبات و امنیت برنامه وبی را به خطر بیندازد. این خطر به میزانی جدی است که حتی اگر زیرساخت امنیتی بسیار مستحکمی (به عنوان مثال فایروالی مناسب که همه حملات را متوقف کند) مورد استفاده قرار گرفته باشد ولی ورودیهای کاربران مورد ارزیابی قرار نگیرد، تمامی تلاشی که برای ایجاد زیرساخت امنیتی به کار گرفته شده است به هدر میرود.
بنابراین طراحان سیستم باید این نکته مهم را در ذهن خود داشته باشند که همه ورودیهای کاربران تا زمانی که از امن بودن آنها اطمینان حاصل نشده است، باید نامطمئن تلقی شوند. هکرها میدانند که برنامهها چگونه ورودیها را استفاده میکنند و چگونه میتوان از آنها برای بهرهگیری از نقاط آسیب پذیر سیستم بهره گرفت. بنابراین بهترین روش برای مقابله با این مشکل تایید اعتبار همه ورودیهای کاربران است. هرچند که این فرایند باعث کاهش سرعت و کارآیی برنامه میشود ولی برای حفظ امنیت سیستم اجتناب ناپذیر میباشد.
دادههای نامطمئن از طرق مختلفی میتوانند وارد سیستم شوند، که میتوان به موارد زیر اشاره نمود:
· رشتههای پرس و جوی URL
· فرمهای HTML
· Cookieها
· پرس و جوهایی که بر روی یک پایگاه داده انجام میشوند.
رشته های پرس و جو، فیلدهای اطلاعاتی فرم ها و Cookie ها را می توان قبل از پردازش اعتبارسنجی نمود.
در اینجا حملاتی که در نتیجه استفاده از داده نامطمئن بر روی برنامه و سایت وب صورت میگیرند را ذکر می کنیم.
آبجی
4th November 2009, 10:25 AM
تزریق اسکریپت ( Script Injection )
این نوع حمله در صورتی اتفاق میافتد که با استفاده از یک باکس ورودی کاربر اقدام به ورود نشانهها2و یا کد اسکریپت خرابکارانه نموده باشد. این ورودی در پایگاه داده و یا در Cookieها ذخیره میشود. چنین کدی میتواند به گونهای طراحی شود که اثرات مختلفی داشته باشد و ممکن است عملکرد یک برنامه یا سایت اینترنتی را برای همه کاربران تحت تاثیر قرار دهد.
وقتی یک مرورگر که اسکریپتهای آن فعال است این کد را میخواند، کد ناخواسته اجرا میشود و اثرات خود را به جای میگذارد. نشانههایی که در این روش قابل استفاده هستند
شامل <script>، <object>، <applet> و <embed> میباشند.
مثالی از این نوع حمله به صورت زیر است. فرض کنید در یک صفحه وبی که لیستی از نام مولفین ارائه میدهد، فیلدی وجود دارد که میتوان در آن نامهای جدید را وارد نمود. این مثال فقط برای روشن شدن مطلب ارائه میشود ولی نمونههای زیادی وجود دارند که کاربر میتواند دادهای را وارد نماید. رایجترین نمونه این صفحات، آنهایی هستند که کاربر میتواند از طریق آنها عبارت جستجویی را وارد کند.
اگر کاربر عبارت زیر را به عنوان نام یک مولف وارد نماید اتفاق جالبی خواهد افتاد؛
<script> alert(‘Script Injection’); </script>
آبجی
4th November 2009, 10:26 AM
با بررسی اتفاقاتی که رخ داده مشخص میشود که اسکریپت وارد شده در صفحه، کد سمت سرور برنامه را تغییر نمیدهد. آنچه که اتفاق افتاده تغییر محتوای پویای سایت است. با وجود عدم تغییر کد برنامه، باز این تزریق اسکریپت خطرناک است، زیرا اسکریپتی که وارد شده است به عنوان بخشی از محتویات سایت در مرورگرهای کاربران اجرا میشود. کد اسکریپت وارد شده توسط همه کاربرانی که به سایت مراجعه میکنند رویت میشود.
آبجی
4th November 2009, 10:26 AM
به طریق مشابه کاربر میتواند هر کد JavaScript دیگری را نیز به سایت تزریق نماید. به عنوان مثال:
<script> location.href = ‘Malicious.html’; </script>
با درج عبارت فوق در پایگاه داده به عنوان نام یکی از مولفین هر گاه صفحه نام مولفین توسط کاربری مشاهده شود، کنترل مرورگر به صورت خودکار به صفحه Malicious.html انتقال داده میشود. (نشانه location که با یک آدرس URL اشاره میکند، محتویات صفحهای که آدرس آن در href معرفی شده است را در مرورگر بار میکند.)
هکر در صفحه Malicious.html میتواند هر کاری انجام دهد. به عنوان مثال میتواند یک کنترل ActiveX و یا کد JavaScript را بر روی دستگاه کاربر بار کرده و اقدام به اجرای آن نماید، و یا تعدادی زیادی مرورگر جدید باز نموده و در هر یک از آنها یک سایت جدید را باز کند.
آبجی
4th November 2009, 10:28 AM
این نوع حمله خیلی مشابه به حملات تزریق اسکریپت است و در مواقعی اتفاق میافتد که کد اسکریپت توسط صفحات پویای وب سایر سایتها در مرورگر وب وارد شود. در این نوع حملات، هدف هکر خود سایت نیست، بلکه کاربران آن مد نظر میباشند. فرض کنید که یک سایت عبارات جستجو را با استفاده از مجموعه QueryString (در صورتی که برنامه با استفاده از فناوری .NET توسعه داده شده باشد) و از طریق متد HTTP Get دریافت میکند، و سایر سایتها میتوانند عبارات جستجو را با عبارت پرس و جوس Search ارسال کنند.
YourSite.com?Search=asp.net
صفحه جستجو رشته پرس و جو را خوانده و در پایگاه داده به دنبال عبارت مورد نظر میگردد و در نهایت نتیجه جستجو را نمایش میدهد. در صورتی که دادهای متناسب با عبارت مورد نظر در پایگاه داده وجود نداشته باشد، پیامی مبنی بر یافت نشدن جواب تولید و نمایش داده خواهد شد.
در صفحه جستجو قالبی کدهای زیر وجود دارند:
کد:
void Page_load(Object Src,EventArgs E)
{
String sSearchStr="";
NameValueCollection ColQstr = Request.QueryString;
String[] qStrAry = colQstr.AllKeys;
for (int i = 0; i<= qStrAry.GetUpperBound(0); i++)
{
if (qStrAry[i] == "search")
{
String[] qStrAry = colQstr.AllKeys;
for (int j = 0; j<=qStrAryVal.GetUpperBound(0); j++)
{
sSearchStr = qStrAryVal[j];
break;
}
}
}
if (sSearchStr.Trim() != "")
{
if (SearchDataStore(sSearchStr) == false)
lblResult.Text = "The search keyword " + sSearchStr +
" did not produce any results. Please try again.";
}
}
bool SearchDataStore(String sSearchStr)
{
/*Perform the search against the datastore and display the
result. if there are no results then return false.*/
return false;
}
رویداد Page_Load پارامتر Search را در QueryString خوانده و مقدار آن را بازیابی میکند. سپس با فراخوانی متد SearchDataStore اقدام به بازیابی نتایج رشته جستجو مینماید. در صورتی که موردی در پایگاه داده یافت نشد مقدار بازگشتی این متد false خواهد بود. بعد از این فرایند رویداد Page_Load نتایج جستجو را نمایش میدهد (اگر بازگشتی متد true باشد رکوردهای یافت شده و در صورتی که false باشد پیغام خطای مناسب).
استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است
استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد
vBulletin® v4.2.5, Copyright ©2000-2025, Jelsoft Enterprises Ltd.