ایمنی حافظه: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
بدون خلاصۀ ویرایش |
جز ویرایش با ابرابزار |
||
خط ۳:
{{پیشنهاد حذف۲|امنیت حافظه|}}<!-- الگوی پیشنهاد حذف را فقط مدیران میتوانند بردارند لطفاً آن را برندارید -->
'''امنیت حافظه''' نگرانی در توسعه نرم افزار است که قصد دارد ازاشکالات نرم افزاری که باعث آسیب
زبان کامپیوتر مانند C و C + + است که پشتیبانی از اشاره گر دلخواه حساب، ریخته گری، معمولا حافظه امن است. چندین روش مختلف برای پیدا کردن خطاهای موجود در
زبان سیکلون با استفاده از یک روش ترکیبی، از جمله «اشاره گر چربی" (اشاره گر که حمل ابرداده خود را به طور مستقیم دارد) و مناطق را به برنامه نویسان برخی از کنترل سطح پایین در حالی که هنوز به اطمینان از ایمنی از حافظه است. {{سرخط}}▼
بالا ترین سطح زبان های برنامه نویسی اجتناب از مشکل را با رد کردن حساب ▼
▲زبان سیکلون با استفاده از یک روش ترکیبی، از جمله «اشاره گر چربی" (اشاره گر که حمل ابرداده خود را به طور مستقیم دارد) و مناطق را به برنامه نویسان برخی از کنترل سطح پایین در حالی که هنوز به اطمینان از ایمنی از
اشاره گر و ریخته گری به طور کامل، و با اجرای ردیابی زباله به عنوان مجموعه ای در این طرح تنها مدیریت حافظه است. {{سرخط}}▼
▲اشاره گر و ریخته گری به طور کامل، و با اجرای ردیابی زباله به عنوان
یک زبان می تواند حساب، ریخته گری اشاره گر را بدون به خطر انداختن امنیت حافظه با استفاده از اثبات قضیه خودکار ▼
به عنوان یک شکل از تجزیه و تحلیل کد ایستا پشتیبانی می کند. ESC / جاوا و نشان دادن دو راه است که برنامه نویسان می توانند از ویژگیهای خود را در راه اعلام است که می تواند توسط prover قضیه درک شود. {{سرخط}}▼
▲یک زبان
▲به عنوان یک شکل از تجزیه و تحلیل کد ایستا پشتیبانی
'''انواع خطاهای حافظه'''{{سرخط}}
انواع مختلفی از خطاهای حافظه
سرریز بافر - در خارج از محدود
درجه دو آزاد -
▲درجه معلق اشاره گر - اشاره گر ذخیره آدرس یک شی است که حذف شده است. {{سرخط}}
▲درجه دو آزاد - تماس های مکرر برای آزاد جسم در حال حاضر آزاد شده است می تواند باعث freelist مبتنی بر allocators به شکست است. {{سرخط}}
اشاره گر وحشی درجه بوجود
▲مي تواند دسترسی به اشاره گر نول درجه یک استثنا یا خاتمه برنامه در بسیاری از محیطها را ایجاد کند، اما همچنين می تواند باعث فساد در مغز سیستم عامل و یا سیستم بدون حفاظت از حافظه، و یا زمانی که استفاده از اشاره گر تهی شامل افست های بزرگ و یا منفی است. {{سرخط}}
درجه سرریز پشته - هنگامی رخ
▲اشاره گر وحشی درجه بوجود می آیند که یک اشاره گر قبل از مقدار دهی اولیه به برخی از دولت شناخته شده استفاده می شود. آنها نشان می دهد رفتار غیر قابل پیشبینی به عنوان اشاره گر آویزان، هر چند آنها هستند، کمتر احتمال دارد برای ماندن غیر قابل تشخیص است. {{سرخط}}
شکست تخصیص - این برنامه تلاش
▲درجه سرریز پشته - هنگامی رخ می دهد که یک برنامه خارج از فضای پشته اجرا می شود ، به طور معمول به دلیل از بازگشت بیش از حد عمیق است. {{سرخط}}
▲شکست تخصیص - این برنامه تلاش می کند تااز حافظه بیش از مقدار موجوداستفاده شود. در برخی از زبانها، این وضعیت را باید بعد از هر تخصیص دستی بررسی شود. {{سرخط}}
'''اشاره گر معلق'''{{سرخط}}
یک اشاره گر است که اشاره به حافظه
یک اشاره گر آویزان است. در زبان مدیریت حافظه کتابچه راهنمای کاربر، اشاره گر آویزان
<syntaxhighlight lang="c">
int *a = new int;
سطر ۴۱ ⟵ ۳۷:
*a = 4; /* Memory error: we may be overwriting another pointer's data */
</syntaxhighlight>{{سرخط}}
وجود ساده از اشاره گرها ی آویزان، خطای حافظه تلقی
'''سر ریز بافر'''{{سرخط}}
بافر ناحیه ذخیره سازی موقت
سرریز زمینه ورودی، فضای خط فرمان و یا بافر ورودی. {{سرخط}}
بازنویسی آدرس بازگشت در پشته با آدرس از کد
نوشتن یک کد ساده که مهاجم برای اجرا
<syntaxhighlight lang="c">
# include <stdio.h>
# define ARRAY_SIZE 128
int main(int argc, char *argv[])
{
سطر ۵۹ ⟵ ۵۵:
strcpy(arr, argv[1]);
return 0;
}
</syntaxhighlight>{{سرخط}}
تا زمانی به اندازه این
اگر اندازه آرگومان خط فرمان بزرگتر از ARRAY_SIZE شد سپس آن به درستی کار
تابع کار خواهد کرد تا زمانی که برخورد کند با NULL نابودگر (\
این برنامه دچار مشکل سرریز بافر
راه حل برای این مشکل، از
برخی از
پرل به صورت خودکار تغییر و تنظیم اندازه
=== منابع ==
* http://people.cs.umass.edu/~emery/pubs/fp014-berger.pdf
[[ru:Безопасность доступа к памяти]]
|