Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основные положения по разработке программного обеспечения




 

Общие рекомендации по написанию устойчиво работающих алгоритмов (необходимое, но не достаточное условие их информационной безопасности):

- не используйте экзотические и недокументированные возможности языка программирования: вы не уверены в том, как они реализуются на самом деле;

- оформляйте исходный текст ясно и четко, используйте необходимые комментарии;

- используйте скобки для явного указания порядка операций компилятор может оптимизировать выполнение выражений и начать, скажем, сложение F(l)+F(2)+F(3) со второго знака «+», тем самым вызвав сначала функцию F от 2, затем от 3, а только затем от 1 - если в функции изменяются какие-либо глобальные переменные это может привести к непредсказуемым последствиям;

- при всех удобных случаях используйте передачу параметров функции в качестве аргументов, а не в глобальных переменных;

- используйте структурное программирование разбивайте сложные блоки кода на процедуры с ясной структурой и легко контролируемым набором параметров;

- никогда не программируйте недокументированные возможности технология «reverse engineering» - «дизассемблирование и обратная компиляция» - на сегодняшний день достигла огромных результатов, особенно в отношении высокоуровневых языков программирования;

- закрывайте файлы сразу же по окончании работы с ними, а если Вы записываете важную информацию в течение долгого времени - периодически вызывайте функции сброса файлового буфера на дисковый накопитель;

- проверяйте свободное место на диске перед записью в файл некоторые операционные выдают ошибки при записи на переполненный диск нестандартным образом, результат этого может быть плачевным;

- блокируйте файлы и наборы данных, если вы обращаетесь к ним по записи из нескольких параллельно работающих процессов или программ;

- старайтесь как можно сильнее сократить время записи в совместно используемые файлы, а, следовательно, и время их блокирования;

- не будьте заранее уверенными, что программа запущена из той директории где расположен ее исполнимый файл, - одной из первых команд после запуска программы явно смените каталог на желаемый;

- при работе с внешними и сетевыми устройствами и дисками стройте циклы ожидания таким образом, чтобы из них был возможен выход по истечении определенного периода ожидания ответа - тайм-аута;

- очень тщательно разрабатывайте схему синхронизации параллельно работающих с одними и теми же данными процессов;

- тщательно проверяйте алгоритмы на синдром «мертвой петли» - это ситуация, когда процесс А, начав изменять объект 1 и заблокировав его в связи с этим, ожидает снятия блокирования с объекта 2, в то время как процесс В, в то же самое время начавший изменять объект 2 и заблокировав его, ожидает снятия блокировки с объекта 1 - подобная проблема при такой схеме синхронизации теоретически неразрешима, единственный выход из нее - рассматривать объекты 1 и 2 как единое целое с возможностью только совместной блокировки;

- аккуратно выделяйте и очищайте объекты в динамической памяти;

- при необходимости используйте криптографию;

- никогда не передавайте пароль открытым текстом;

- используйте криптостойкие алгоритмы шифрования и хеширования;

- вычищайте блоки оперативной памяти после того как информация (пароли, ключи, конфиденциальные данные), находившаяся в них, стала ненужной;

- встраивайте в ваши системы требование регистрации каждого оператора с уникальным паролем и записью как можно большего количества информации о сеансе в логфайл, недоступный для изменения операторам;

- тщательно тестируйте ваши приложения, в том числе на больших и неправильных входных данных.




Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 811; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.039 сек.