يمنحك الصدأ غير الآمن مزيدًا من التحكم في الذاكرة. تعرف على كيفية التعامل مع الصدأ غير الآمن وفهم المخاطر الكامنة المرتبطة باستخدامه.

تعد ضمانات أمان الذاكرة إحدى نقاط بيع Rust ؛ ومع ذلك ، فإن الصدأ ليس محصنًا ضد الأخطاء ونقاط الضعف. نظرًا لأن مدقق استعارة Rust يفرض نموذج الملكية ، فهناك مفاضلة طفيفة في وقت التجميع أثناء فحوصات السلامة.

يوفر Rust وظائف لتجاوز اختبارات السلامة في ميزة تسمى "الصدأ غير الآمن" والتي تتيح لك تجنب فحوصات السلامة هذه لأغراض الأداء. الصدأ غير الآمن هو أداة قوية لكتابة برامج أنظمة فعالة ومنخفضة المستوى باستخدام Rust.

فهم الصدأ غير الآمن

Unsafe Rust عبارة عن مجموعة من الميزات التي يمكنك استخدامها لتجاوز ضمانات أمان Rust في مقابل قدر أكبر من التحكم في الذاكرة. تتضمن ميزات الصدأ غير الآمنة المؤشرات الأولية والوظائف غير الآمنة والسمات غير الآمنة.

الغرض من Rust غير الآمن هو تزويد المطورين بالقدرة على كتابة رمز نظام منخفض المستوى دون التضحية بالأداء. يمكنك الوصول إلى موارد الذاكرة ومعالجتها مباشرةً وزيادة أداء التطبيق باستخدام Rust غير الآمن.

يعتبر Unsafe Rust مفيدًا بشكل خاص في تطوير أنظمة التشغيل وبرمجة الشبكة وتطوير الألعاب ، حيث يكون الأداء أمرًا بالغ الأهمية. في هذه السياقات ، ستحتاج إلى تحكم دقيق في تخطيط ذاكرة البرنامج وسلوك الكود. يسمح لك Rust غير الآمن بتحقيق ذلك من خلال توفير تجريدات منخفضة المستوى لتنفيذ الخوارزميات المعقدة وهياكل البيانات.

instagram viewer

العمل مع الصدأ غير الآمن

توفر الكتل غير الآمنة وظيفة استخدام ميزات الصدأ غير الآمنة. ستستخدم ملف غير آمن كلمة أساسية لتحديد الكتل غير الآمنة التي تحتوي على كود صدأ صالح.

إليك كيفية استخدام كتلة غير آمنة للوصول المباشر إلى الذاكرة لتعديل القيمة:

الجبهة الوطنيةرئيسي() {
يتركموت س = 10;

غير آمن {
يترك خام = &موت x مثل *موتi32;
* خام = 20;
}

println!("x الآن {}"، خ) ؛
}

ال x المتغير هو عدد صحيح قابل للتغيير. في ال غير آمن كتلة ، المؤشر الخام إلى x يعين قيمة جديدة لـ x. الكود الموجود في ملف غير آمن الكتلة صالحة ولكنها ليست آمنة ، ولم تكن في منطقة غير آمنة ؛ تعطل البرنامج.

بالإضافة إلى ذلك ، يمكنك تحديد الوظائف غير الآمنة عن طريق إضافة ملف غير آمن الكلمة الرئيسية قبل الجبهة الوطنية الكلمات الرئيسية في إعلانات وظيفتك.

غير آمنالجبهة الوطنيةتنفيذ_عملية_غير آمنة() {
// رمزك غير الآمن هنا
}

ستحتاج إلى حظر غير آمن للاتصال بالوظائف غير الآمنة في أجزاء أخرى من برنامجك.

الجبهة الوطنيةرئيسي() {
غير آمن {
Perform_unsafe_operation () ،
}
}

وظائف الوسم مع غير آمن لا تعني الكلمة الرئيسية أن الوظيفة خطيرة بطبيعتها. يشير إلى أن الوظيفة تحتوي على رمز يتطلب مزيدًا من الحذر في الاستخدام.

المخاطر المرتبطة باستخدام الصدأ غير الآمن

قد يؤدي الاستخدام غير السليم لـ Rust غير الآمن إلى حدوث أخطاء في الذاكرة ، وتسابق البيانات ، ونقاط ضعف أمنية أخرى. لذلك ، من الضروري فهم المخاطر أثناء اتباع أفضل الممارسات المرتبطة بالصدأ غير الآمن لكتابة رمز آمن وفعال.

يتمثل الخطر الرئيسي المرتبط بـ Rust غير الآمن في احتمال وجود أخطاء متعلقة بالذاكرة يمكن أن تؤدي إلى أعطال وثغرات أمنية وسلوكيات تعليمات برمجية غير محددة.

تحدث أخطاء الذاكرة عندما يحاول البرنامج الوصول إلى الذاكرة بشكل غير طبيعي ؛ البرنامج في النهاية يتعطل أو يتصرف بشكل غير متوقع.

تحدث سباقات البيانات عندما يصل اثنان أو أكثر من خيوط البرنامج إلى نفس قطعة الذاكرة في وقت واحد ، وفي واحد على الأقل من الخيوط هو تعديل القيمة في الذاكرة ، مما يتسبب في تصرف البرنامج بشكل غير متوقع.

يمكنك تشغيل فيضان المخزن المؤقت عن طريق استخدام الصدأ غير الآمن بشكل غير صحيح. يحدث فيضان المخزن المؤقت عندما يكتب البرنامج البيانات خارج نهاية المخزن المؤقت. قد يؤدي تجاوز سعة المخزن المؤقت إلى تعطل البرنامج أو السماح للمهاجمين بتنفيذ تعليمات برمجية عشوائية.

نقطة ضعف أخرى هي الاستخدام بعد الحر (UAF) والتي تحدث عندما يصل البرنامج إلى الذاكرة بعد إلغاء تخصيص القيمة. يمكن أن يتسبب UAF في أن يتصرف البرنامج بشكل غير متوقع ويحتمل أن يتسبب في حدوث ثغرات أمنية.

بسبب نقاط الضعف هذه ، عند العمل مع Rust غير الآمن ، من الضروري أن تعمق فهم ملكية روست و كيف يعمل نموذج الاقتراض في Rust مع اتباع أفضل الممارسات.

إدارة ذاكرة الصدأ مرنة

يعمل نموذج ملكية Rust على إدارة الذاكرة تلقائيًا ، مما يقلل من مخاطر الأخطاء المتعلقة بالذاكرة. يسمح الاقتراض لمتغيرات متعددة بالوصول إلى نفس موارد الذاكرة دون تعارض في وقت واحد.

توفر إدارة ذاكرة Rust المرونة والأمان والأداء اللازم لتطوير البرامج الحديثة ، مما يجعل Rust أداة قوية لكتابة تعليمات برمجية فعالة وموثوقة.