عنصر اصلي در كدنويسي امن با زبان هاي مختلف برنامه نويسي، مستند سازي خوب و استفاده از استانداردهاي قابل اجرا است. استانداردهاي كدنويسي، برنامه نويسان را ترغيب به پيروي از مجموعه اي واحد از قوانين و راهنماييها مي كند كه بر اساس نيازمندي هاي پروژه و سازمان تعيين شده است، نه بر اساس سلايق و مهارت هاي مختلف برنامه نويسان. به محض تعيين استانداردهاي مذكور، مي توان از آن به عنوان معياري براي ارزيابي كدهاي منبع، چه به صورت دستي و چه به صورت اتوماتيك استفاده كرد. از استانداردهاي معروف در اين زمينه مي توان به استانداردCERT براي كدنويسي امن اشاره كرد كه يك سري از قوانين و پيشنهادات را براي كد نويسي امن با زبان هاي برنامه نويسي C، C++ و جاوا ارائه مي دهد. هدف از اين قوانين و پيشنهادات، حذف عادت هاي كدنويسي ناامن و رفتارهاي تعريف نشده است كه منجر به آسيب پذيري هاي قابل سوءاستفاده مي شود. به كارگيري استانداردهاي مذكور منجر به توليد سيستم هايي با كيفيت بالاتر مي شود كه در برابر حملات بالقوه، پايدارتر و مقاوم تر هستند. در مقاله "آشنايي با استاندارد CERT براي برنامه نويسي امن"، كليات استاندارد CERT در زمينه مزبور را توضيح داديم و در اين مقاله به صورت تخصصي تر شيوه برنامه نويسي امن با زبان C را مورد بررسي قرار مي دهيم. قابل ذكر است كه در اين استاندارد 89 قانون و 132 پيشنهاد براي برنامه نويسي امن با زبان C ارائه شده است كه در سري مقالات كدنويسي امن با زبان C، مهمترين آنها را كه در سطح يك قرار دارند، شرح خواهيم داد. براي كسب اطلاعات بيشتر در مورد سطح بندي قوانين و پيشنهادات به مقاله "آشنايي با استاندارد CERT براي برنامه نويسي امن" مراجعه فرماييد.
حوزه استاندارد CERT براي كدنويسي امن با C
استاندارد CERT براي كد نويسي امن با زبان برنامه نويسي C، به طور اختصاصي براي نسخه هايي كه توسط موسسات زير تعريف شده اند، تهيه شده است:
البته بسياري از موارد مطرح شده در اين استاندارد، قابليت اعمال بر نسخه هاي قديمي تر C را نيز دارد. همچنين هر چند كه بهترين راه حل ها براي مشكلات كدنويسي امن غالباً وابسته به سكو هستند، اما استاندارد مذكور مستقل از سيستم عامل و سكو است. البته در بسياري از موارد، استاندارد CERTبراي كدنويسي امن با C با سيستم هاي ويندوز و POSIX سازگاري دارد و همچنين در برخي از موارد داراي راه حل هاي اختصاصي براي سكوهايي همچون لينوكس و OpenBSD است.
دسته بندي قوانين و پيشنهادات
قوانين و پيشنهادات برنامه نويسي امن با زبان C به 14 زيرگروه تقسيم مي شوند. در زير دسته بندي مذكور و تعداد قوانين و پيشنهادات ارائه شده در هر زيرگروه آورده شده است.
رديف | دسته بندي | قوانين | پيشنهادات |
1 | Preprocessor)PRE) | 2 | 11 |
2 | Declarations and Initialization)DCL) | 7 | 16 |
3 | Expressions)EXP) | 9 | 13 |
4 | Integers)INT) | 6 | 16 |
5 | Floating Point)FLP) | 5 | 4 |
6 | Arrays)ARR) | 9 | 3 |
7 | Characters and Strings | 8 | 9 |
8 | Memory Management)MEM) | 6 | 11 |
9 | Input Output)FIO) | 15 | 17 |
10 | Environment)ENV) | 3 | 5 |
11 | Signals)SIG) | 5 | 3 |
12 | Error Handling)ERR) | 3 | 7 |
13 | Miscellaneous)MSC) | 2 | 16 |
14 | POSIX)POS) | 8 | 3 |
مجموع | 88 | 134 |
در ادامه قوانين و پيشنهادات سطح يك (L1) از هر بخش را توضيح مي دهيم.
Preprocessor)PRE)
نظرات