Читаем Защита от хакеров корпоративных сетей полностью

Современные программисты, стремясь как можно лучше защититься от атак переполнения буфера, начинают создавать программы, которые перед записью входных данных в буфер проверяют, нет ли в них выполняемого программного кода. Подобные программы серьезно затрудняют деятельность злоумышленника, не позволяя ему запросто поместить злонамеренный код в программе. Большие неприятности сулят нулевые байты в буфере, поэтому современные программисты тщательно исследуют безопасность записываемых в буфер данных.

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

Например, некоторые программисты проверяют значения входных данных. Если ожидается ввод чисел, то перед записью в буфер проверяется, является ли каждое введенное значение числом. В стандартной библиотеке языка C есть несколько функций, которые проверяют значение введенных данных. Ниже приведены некоторые из них для платформы Win32. Для работы в 16-битном стандарте кодирования символов Unicode существуют аналогичные функции проверки «широких» символов.

int isalnum( int c ); checks if it is in A-Z,a-z,0-9

int isalpha( int c ); checks if it is in A-Z,a-z

int __isascii( int c ); checks if it is in 0x00-0x7f

int isdigit( int c ); checks if it is in 0-9

isxdigit( int c ); checks if it is in 0-9, A-F

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже