10 təhlükəsiz proqramlaşdırma məsləhəti

1. Giriş verilənlərini yoxlamaq: Etibar etmədiyiniz bütün mənbələrdən olan giriş verilənlərini yoxlayın. Giriş verilənlərinin düzgün yoxlanılması proqram təminatındakı boşluqların böyük əksəriyyətini aradan qaldıra bilər. Komanda sətrinin arqumentləri, şəbəkə interfeysləri, mühit dəyişənləri və istifadəçinin nəzarət etdiyi fayllar daxil olmaqla, əksər xarici verilən mənbələrinə şübhə ilə yanaşın [Seacord 05].

2. Kompilyatorun xəbərdarlıqlarını diqqətdə saxlayın. Proqram kodunu sizin kompilyator üçün mövcud olan ən yüksək xəbərdarlıq səviyyəsində kompilyasiya edin və kodu dəyişməklə xəbərdarlıqları aradan qaldırın [C MSC00-AC++ MSC00-A]. Digər təhlükəsizlik boşluqlarını aşkarlamaq və aradan qaldırmaq üçün statik və dinamik analiz alətlərindən istifadə edin.

3. Təhlükəsizlik siyasəti üçün arxitektura və plan qurun. Təhlükəsizlik siyasətini həyata keçirmək və yerinə yetirmək üçün sizin proqram təminatının arxitekturasını və planını yaradın. Misal üçün, əgər sizin sistem müxtəlif vaxtlarda müxtəlif imtiyazlar tələb edirsə, onda sistemin hər birinin müvafiq imtiyazlar çoxluğu olan qarşılıqlı əlaqəli müxtəlif altsistemlərə bölünməsi məsələsinə baxın.

4. Sadə plan qurun. Mümkün qədər sadə və kiçik plan qurun [Saltzer 74, Saltzer 75]. Mürəkkəb planlar onların yerinə yetirilməsində, konfiqurasiyasında və istifadəsində səhvlərin buraxılması ehtimalını artırır. Əlavə olaraq, təhlükəsizlik mexanizmləri mürəkkəbləşdikcə, etibarlılığa müvafiq səviyyədə nail olmaq üçün tələb edilən cəhdlər kəskin artır.

5. Defolt imtina. Giriş qərarlarında istisnaya yox, icazəyə əsaslanın. Bu o deməkdir ki, defolt olaraq, giriş bağlıdır və müdafiə sxemi girişə icazə verən şərtləri müəyyən edir [Saltzer 74, Saltzer 75].

6. Ən az imtiyaz prinsipinə əməl edin. Hər bir proses işi başa çatdırmaq üçün tələb edilən ən az imtiyaz çoxluğu ilə icra olunmalıdır. Hər hansı artırılmış imtiyaz minumum vaxta verilməlidir. Bu yanaşma bədniyyətlinin hər hansı proqram kodunu artırılmış imtiyazla yerinə yetirməsi imkanını azaldır [Saltzer 74, Saltzer 75].

7. Başqa sistemlərə göndərilən verilənləri təmizləyin. Mürəkkəb altsistemlərə [C STR02-A] göndərilən bütün verilənləri, o cümlədən, komanda örtükləri, relyasion verilənlər bazası, alınmış komponentləri təmizləyin. Bədniyyətlilər bu komponentlərin istifadə edilməyən funksiyalarını SQL, komanda və ya başqa inyeksiya hücumları ilə işə sala bilərlər. Bu həmişə giriş verilənlərini yoxlama problemi deyil, çünki mürəkkəb altsistemlər çağırış anındakı konteksti başa düşmürlər. Çağırış prosesi bu konteksti başa düşür, buna görə də altsistemi çağırmazdan öncə verilənləri təmizləməyə cavabdehdir.

8. Sonadək praktiki müdafiə. Risqləri bir neçə müdafiə strategiyası ilə idarə edin ki, əgər bir müdafiə xətti sıradan çıxsa, başqa müdafiə xətti təhlükəsizlik boşluğunun istismara yararlı boşluğa çevrilməsinin qarşısını alsın və ya uğurlu istismarın nəticəsini məhdudlaşdırsın. Məsələn, təhlükəsizlik proqramlaşdırma üsulları təhlükəsiz icra mühiti ilə birləşdirildikdə tətbiq zamanı kodda qalan boşluqların əməliyyat mühitində istismar olunması ehtimalını azaldır [Seacord 05].

9. Keyfiyyətə zəmanətin effektiv üsullarını istifadə edin. Keyfiyyətə zəmanətin effektiv üsulları boşluqların müəyyən edilməsində və aradan qaldırılmasında effektiv ola bilər. Fazzinq testləri, nüfuzetmə testləri və ilkin kodun auditləri effektiv keyfiyyətə zəmanət proqramının tərkib hissəsi kimi tətbiq edilməlidir. Müstəqil təhlükəsizlik auditi daha təhlükəsiz sistemlərə gətirib çıxara bilər. Xarici auditorlar, məsələn, səhv fərziyyələrin yoxlanması və korrektə edilməsində, müstəqil baxış təmin edirlər [Seacord 05].

10. Təhlükəsiz kodlaşdırma standartını qəbul edin. Hədəf proqramlaşdırma dili və platformanız üçün təhlükəsiz kodlaşdırma standartı hazırlayın və/və ya tətbiq edin.

Əlavə təhlükəsiz proqramlaşdırma məsləhətləri

1. Təhlükəsizlik tələblərini müəyyən edin. Təhlükəsizlik tələblərini həyat tsiklinin erkən mərhələsində müəyyən edin və sənədləşdirin, sonrakı inkişaf artefaktlarının bu tələblərə uyğunluğunun qiymətləndirildiyinə əmin olun. Təhlükəsizlik tələbləri müəyyən edilmədikdə, yaradılmış sistemin təhlükəsizliyi effektiv qiymətləndirilə bilməz.

2. Təhdidləri modelləşdirin. Proqram təminatının məruz qalacağı təhdidləri qabaqcadan söyləmək üçün təhdidlərin modelləşdirilməsindən istifadə edin. Təhdidlərin modelləşdirilməsi əsas aktivləri müəyyən etməyi, tətbiqi proqramı komponentlərə bölməyi, bu aktivlərə və komponentlərə olan təhdidləri müəyyən etməyi və sinifləndirməyi, risq ranqına əsasən təhdidlərin reytinqini qiymətləndirməyi və sonra təhdidləri azaltma strategiyasını işləməyi və onları layihədə, kodda və test hallarında həyata keçirməyi nəzərdə tutur [Swiderski 04].

İstifadə edilmiş mənbələr
https://www.securecoding.cert.org/confluence/display/seccode/Top+10+Secure+Coding+Practices


 Əlaqə:
 Telefon: (994 12) 5104253
 E-poçt: info at sciencecert dot az
2013 © AMEA İnformasiya Texnologiyaları İnstitutu
Saytdakı məlumatlardan istifadə edərkən www.sciencecert.az saytına istinad zəruridir.