Почему безопасность программного обеспечения — это навык, которым должен обладать каждый программист?

Почему безопасность программного обеспечения — это навык, которым должен обладать каждый программист?

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

Безопасность программного обеспечения направлена ​​на управление злонамеренными атаками путем выявления потенциальных уязвимостей в программном обеспечении и принятия необходимых мер предосторожности для их защиты.

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

Однако есть два основных метода, которые могут использовать все разработчики программного обеспечения, чтобы гарантировать создание безопасного программного обеспечения. Речь идет о написании безопасного кода с самого начала и его эффективном тестировании.

Почему безопасность программного обеспечения — это навык, которым должен обладать каждый программист?

Безопасность программного обеспечения играет чрезвычайно важную роль

Как написать безопасный код

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

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

Напишите безопасный код

Предположим, вы хотите создать программу, которая принимает от пользователя только два целочисленных значения и выполняет над ними операцию сложения. Как хороший разработчик, вы теперь знаете все о своем приложении. Вы знаете все значения, которые будет принимать эта программа (целые значения), и вы знаете задачу, которую выполнит эта программа (операция сложения).

Пример создания программы на Java

import java.util.Scanner;
public class Main {
//The main function that executes the program and collects the two values
public static void main(String[] args) {
System.out.println("Please enter your two integer values: ");
int value1;
int value2;
Scanner input = new Scanner(System.in);
value1 = input.nextInt();
value2 = input.nextInt();
addition(value1, value2);
input.close();
}
//the function that collects the two values and displays their sum
private static void addition(int value1, int value2) {
int sum;
sum = value1 + value2;
System.out.println("The sum of the two integer values you entered: "+ sum);
}
}

Приведенный выше код создает приложение, которое точно соответствует требованиям. При выполнении он выведет в консоли следующую строку:

Please enter your two integer values:

После этого приложение будет оставаться на паузе до тех пор, пока пользователь не введет в консоль два целочисленных значения (то есть введите первое значение, нажмите клавишу Enter и повторите).

Если пользователь вводит в консоль значения 5 и 4 , программа выдает следующий вывод:

The sum of the two integer values you entered: 9

Замечательно. Программа делает именно то, что должна делать. Однако если злонамеренный пользователь войдет и введет в ваше приложение нецелое значение, например «g», возникнет проблема. Это связано с тем, что в приложении нет кода, защищающего от неутвержденных значений.

На этом этапе ваше приложение выйдет из строя, создавая потенциальный шлюз в ваше приложение, чтобы хакеры точно знали, что делать дальше.

Пример безопасности программы

import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
//The main function that executes the program and collects the two values
public static void main(String[] args) {
try {
System.out.println("Please enter your two integer values: ");
int value1;
int value2;
//using the scanner class to read each input from the user,
//and assign it to is respective variable (throws an exception if the values are not integers)
Scanner input = new Scanner(System.in);
value1 = input.nextInt();
value2 = input.nextInt();
//calls the addition function and passes the two values to it
addition(value1, value2);
//closes the input stream after it has come to the end of its use
input.close();
//handle all the errors thrown in the try block
}catch(InputMismatchException e){
System.out.println("Please enter a valid integer value.");
}catch(Exception e) {
System.out.println(e.getMessage());
}
}
//the function that collects the two values and displays their sum
private static void addition(int value1, int value2) {
int sum;
sum = value1 + value2;
System.out.println("The sum of the two integer values you entered: "+ sum);
}
}

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

Please enter a valid integer value.

Что такое обработка исключений?

Почему безопасность программного обеспечения — это навык, которым должен обладать каждый программист?

Обработка исключений

По сути, обработка исключений — это современная версия обработки ошибок, в которой вы отделяете код обработки ошибок от обычного кода обработки. В приведенном выше примере весь обычный код обработки (или код, потенциально вызывающий исключение) находится в блоке try , а весь код обработки ошибок — в блоке catch.

Если вы внимательно посмотрите на приведенный выше пример, вы увидите, что есть два блока catch. Первый принимает аргумент InputMismatchException — это имя исключения, возникающего, если введено нецелое значение. Второй принимает аргумент Exception , и это важно, поскольку его цель — найти в коде любые исключения, которые разработчик не обнаружил во время тестирования.

Проверьте код

Никогда не следует недооценивать возможности тестирования и повторного тестирования кода. Многие разработчики (и пользователи приложений) находят новые ошибки после того, как программное обеспечение становится общедоступным.

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

Рассмотрим пример выше. Что, если после завершения вы будете тестировать приложение только с целочисленными значениями? Вы можете выйти из приложения, думая, что успешно определили все потенциальные ошибки, хотя на самом деле это не так.

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

Однако если существует какая-то другая ошибка, которая не появилась во время тестирования, то ее обработает второй блок catch в приведенном выше коде.

Безопасность базы данных

Если ваше приложение подключается к базе данных, лучший способ предотвратить доступ к этой базе данных — обеспечить безопасность всех аспектов приложения. Однако что, если ваше приложение разработано с единственной целью — предоставить интерфейс к указанной базе данных?

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

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

Контроль доступа

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

Это также может запретить зарегистрированным пользователям доступ или редактирование данных, с которыми им не разрешено взаимодействовать.


Как очистить и сбросить кеш Microsoft Store в Windows 10

Как очистить и сбросить кеш Microsoft Store в Windows 10

Если у вас возникли проблемы с установкой или обновлением приложения «Магазин» в Windows 10, это может быть связано с проблемой с кешем магазина. Узнайте как <strong>очистить кеш магазина Microsoft</strong> для вашей учетной записи в Windows 10.

Топ-10 лучших бесплатных программ-кейлоггеров для Windows

Топ-10 лучших бесплатных программ-кейлоггеров для Windows

Кейлоггер - это программное обеспечение для захвата и сбора информации о нажатиях клавиш. Узнайте о лучших бесплатных кейлоггерах для Windows. Как защитить свои данные!

Как всегда запускать Microsoft Edge в режиме InPrivate в Windows 10

Как всегда запускать Microsoft Edge в режиме InPrivate в Windows 10

Если вы используете Microsoft Edge на общем компьютере с Windows 10 и хотите сохранить конфиденциальность своей истории просмотров, узнайте, как настроить Edge для запуска в режиме InPrivate.

8 способов открыть MSConfig в Windows 11

8 способов открыть MSConfig в Windows 11

Вы можете решить многие проблемы, возникающие в Windows 11, с помощью настройки системы. Например, если игра не запускается, открытие и изменение настроек MSConfig может решить проблему.

Инструкция по настройке и использованию VPNBook на Windows

Инструкция по настройке и использованию VPNBook на Windows

VPNBook — бесплатный провайдер VPN с неограниченной пропускной способностью, идеален для доступа к заблокированным сайтам. Узнайте, как настроить VPN на Windows за считанные минуты.

Включить/отключить функцию встроенного автозаполнения в проводнике и диалоговом окне «Выполнить» в Windows 10.

Включить/отключить функцию встроенного автозаполнения в проводнике и диалоговом окне «Выполнить» в Windows 10.

Узнайте, как включить или отключить встроенное автозаполнение в адресной строке проводника и диалоговом окне «Выполнить» в Windows 10. Следуйте нашим простым шагам!

6 способов получить доступ к меню параметров загрузки в Windows 10

6 способов получить доступ к меню параметров загрузки в Windows 10

Windows 10 предоставляет <strong>меню параметров загрузки</strong>, позволяющее исправлять проблемы и перенастраивать систему. Узнайте, как получить доступ к этому меню.

Как запустить любое приложение с помощью кнопки «Удобство доступа» на экране входа в Windows 10

Как запустить любое приложение с помощью кнопки «Удобство доступа» на экране входа в Windows 10

Кнопка «Удобство доступа» на экране входа в Windows 10 дает возможность пользователям запускать приложения, такие как диспетчер задач и командную строку, для улучшения доступа и функциональности.

Как изменить веб-камеру по умолчанию на компьютере с Windows 10

Как изменить веб-камеру по умолчанию на компьютере с Windows 10

Эта статья поможет вам настроить переключение между веб-камерами на компьютере с Windows 10. Убедитесь, что у вас по умолчанию установлена нужная веб-камера.

9 способов открыть Блокнот в Windows 11

9 способов открыть Блокнот в Windows 11

Узнайте, как быстро и удобно открыть Блокнот в Windows 11 различными способами. Bлокнот — это незаменимое текстовое приложение, которое всегда под рукой.