Принцип обмеженого доступу - один з основних принципів безпеки. Він припускає, що доступ відбувається тільки до необхідних даних.
Він може бути сформульований таким чином:
Все, що повинне бути сховано, слід приховати.
Програміст повинен мати доступ до будь-яких даних, не потрібних для виконання поточного завдання. Права доступу повинні бути обмежені. Типові мови програмування не задовольняють цю вимогу. Воно застосовується в операційних системах, наприклад, DOS і WINDOWS.
Принцип обмеженого доступу реалізовується інкапсуляцією (відомою з Modula 2) і об'єктно-орієнтованим підходом:
· приватні поля, змінні, методи
· табліци експорту
· табліци імпорту (визначають внутрішні ресурси)
Строгий контроль типів
Типізація - це вираз (і деяка абстракція програмування), який застосовуєтся до деяких одиниць програмування (змінні, процедури, методи, дані, функції, параметри, події, виключення, модулі).
Тип визначає значення даних і є формальним обмеженням конструкції змінних і об'єктів.
Типізація підтримує об'єктно-орієнтоване програмування. Ім'я зазвичай відображає семантику об'єкту, наприклад, D представляє дані (від Data). У мовах з сильною типізацією (наприклад, Pascal і Modula2) така ідентифікація повинна бути присутньою в оголошенні типів. Оголошення перевіряються (наприклад, якщо програміст оголосить X як ціле число (integer), компілятор перевірить, чи всі виклики сприймають X як ціле число.
Сильна типізація запобігає помилкам в 80% випадків. На жаль, в багатьох комерційних продуктах цей контроль не повний, або ним і зовсім нехтують (Smalltalk, SQL).
Система сильного статичного контролю типів містить наступні елементи:
· Специфікація всіх видів змінних і об'єктів, наприклад: Typedef TypWorker = struct{string name, int salary, Works_in, int salary_without_taxes()}; TypWorker Worker;
· Визначення сигнатури всіх операторів, процедур, функцій, методів, наприклад: Boolean works_long (in TypWorker wrkr, in WorkSphere, out years_works)
· Визначення інтерфейсів, класів і інших інкапсульованих абстракцій.
У визначенні параметрів ми визначаємо параметри вводу і виводу.
Правила типізації інтерфейсу важливі для всіх конструкцій мови. У аналізі семантики повинно бути проведене визначення результуючих типів конструкцій. Перевірка типів посилань - перевірка типів в методах, процедурах і т.д. Також перевіряється, чи немає посилань на типи, які не оголошені або недоступні.