Установите максимальную длину ввода для каждого текстового поля или редактируйте элемент управления в пользовательском интерфейсе.
Протестируйте ввод неправильных данных (например, текста в правках, где ожидается число) и установите общий способ проверки / обработки такого рода ввода.
Также подумайте об атаках SQL-инъекций с помощью поисковых терминов. например Ищите людей, чья фамилия ___, а пользователь вводит "* smith"; выберите * из пользователей * ". Что будет с этим делать слой базы данных?
Если данные, которые вводят пользователи, будут отображаться обратно им (или, что еще хуже, другим пользователям), посмотрите, смогут ли они встроить в него какую-либо разметку или последовательность управления, которые могут злоупотреблять пользовательским интерфейсом при отображении.
Вы не говорите, на какую ОС и язык вы нацелены, но смотрите на то, чтобы предоставить приложению минимальные привилегии, необходимые для его выполнения. Например. в .Net посмотрите декларативные атрибуты безопасности. Это означает, что если злоумышленник получит контроль над вашим приложением, он сможет нанести ему меньше урона.
Создание модульных тестов с преднамеренно некорректным вводом для проверки того, что приложение может справиться с этим.