Page 162 - 4636
P. 162
або розмір даних не перевищить певного значення. Неправильними можуть бути також припущення
про синхронізацію у часі, такі як ймовірність виконання двох конфліктуючих дій в один і той самий
час, або припущення про те, що виконання складної обробки займе більше часу, ніж вирішення
простої задачі.
На подібні припущення легко не звернути уваги, оскільки зазвичай вони правильні. Зломщик
може скористатися переповненням буфера, якщо програміст зробив припущення про довжину вхідних
даних, або звичайний користувач може заплутатися і покинути сайт через те, що програміст не
врахував, що в імені користувача може бути символ апострофа. Помилки подібного роду можна
відшукати і виправити в ході ретельного тестування та детального аналізу коду.
Історично склалося так, що використовувані зломщиками проломи в додатках і операційних
системах зазвичай пов'язані з переповненням буфера або ситуацією перехоплення.
7 Неякісне тестування. Практично неможливо протестувати всі варіанти вхідних даних на всіх
можливих типах устаткування і операційних системах з усіма можливими для користувача
настройками. Це ще більш справедливо щодо систем, які працюють в Інтернет-середовищі.
Насправді просто потрібно хороший план тестування, який забезпечить перевірку всіх функцій
програми на представницькому наборі поширених типів комп'ютерів. Мета правильно спланованого
набору тестів повинна полягати в тому, щоб як мінімум один раз протестувати кожен рядок коду
створеного додатка. В ідеалі цей набір тестів повинен бути автоматизованим, щоб його без особливих
зусиль можна було запускати на обраних комп'ютерах.
Найбільша проблема тестування полягає в тому, що воно мало захоплюиве, до того ж має
виконуватися багаторазово. І хоча деяким людям подобається ламати речі, дуже небагатьом
сподобається ламати одну й ту ж річ знову і знову. Виключно важливо залучати до тестування не
тільки розробників, а й сторонніх людей. Одна з основних цілей тестування - виявити помилкові
припущення, зроблені розробниками. Швидше за все, нова людина буде виходити з абсолютно інших
передумов. Крім того, професіонали рідко проявляють ентузіазм при пошуку помилок у власних
розробках.
8 Відмова від зобов'язань. Останній ризик, який ми розглянемо, - це відмова від зобов'язань
(repudiation). Він буває, коли сторона, що бере участь у транзакції, відмовляється брати в ній
участь. Прикладом з галузі електронної комерції може послужити людину, яка замовила товари на
веб-сайті, а потім відмовилась санкціонувати зняття грошей з кредитної картки. Як приклад можна
також навести людину, яка погоджується з чимось у повідомленні електронної пошти, а потім заявляє,
що її лист було сфальсифіковано.
В ідеальному випадку фінансові транзакції повинні забезпечувати обом сторонам душевний
спокій щодо відмови від зобов'язань. Жоден з учасників не повинен мати права відмовитися від своєї
участі в транзакції, або, точніше, обидва учасники угоди повинні мати можливість послідовно і
документально підтвердити дії іншого учасника для третьої сторони, такої як суд. Але на практиці
подібне відбувається досить рідко.
Аутентифікація надає деяку впевненість про тих, з ким доводиться співпрацювати. Будучи
виданий авторитетним органом, цифровий сертифікат справжності може забезпечити більшу
впевненість.
Відправлені кожній зі сторін повідомлення також необхідно захищати від підробки. Ви небагато
чого досягнете, довівши, що компанія Согр Pty Ltd. відправила вам повідомлення, якщо не вдасться
довести, що отримане повідомлення в точності збігається з відправленим компанією. Як згадувалося
раніше, цифрові підписи та шифрування істотно ускладнюють непомітну зміну повідомлень.
Для виконання транзакцій між сторонами, що підтримують регулярні відносини, ефективним
способом зниження кількості відмов від зобов'язань є цифрові сертифікати в комбінації з обміном
зашифрованими або підписаними повідомленнями. Такі методи неефективні для одноразових
159