V1.5.1 Input and Output Architecture
Requirement:#
Verify that input and output requirements clearly define how to handle and process data based on type, content, and applicable laws, regulations, and other policy compliance.
Explanation:#
Требование подчеркивает важность определения четких правил ввода и вывода данных для приложения. Эти правила должны определять порядок обработки данных с учетом различных факторов, включая тип данных, их содержание и соответствие законодательству, нормативным актам и политикам.
- Input и Output Requirements:
Входные данные - это данные, которые приложение получает от пользователей, внешних систем или других источников. Выходные данные - это данные, которые приложение генерирует и отправляет обратно пользователям или внешним системам.
- Data Handling and Processing:
Это требование подчеркивает необходимость наличия четких рекомендаций по обработке данных в приложении. Это включает в себя проверку, очистку, хранение и передачу данных.
- Consideration of Data Type:
Данные могут быть представлены в различных формах, таких как текст, числа, файлы и т.д. Требование предполагает, что в требованиях к приложению необходимо различать эти типы данных и указывать, как следует обращаться с каждым из них.
- Content-Specific Handling:
Содержание данных может быть самым разным: от пользовательского текста до конфиденциальной финансовой информации. Требования должны определять, как следует управлять, защищать и обрабатывать различные типы данных.
- Legal and Regulatory Compliance:
Соответствие законодательству, нормативным актам и политикам имеет решающее значение для многих приложений, особенно для тех, которые работают с конфиденциальными данными (например, GDPR, HIPAA, PCI DSS). Требования к вводу и выводу данных должны обеспечивать их обработку в соответствии с этими требованиями. Например, обеспечение защиты персональных данных (PII) в соответствии с нормами.
- Security Considerations:
Безопасность является одним из ключевых аспектов обработки данных. Требования должны предусматривать такие меры безопасности, как шифрование, контроль доступа и логирование аудита при обработке конфиденциальных данных.
Например, рассмотрим приложение электронной коммерции, которое собирает различные типы данных, включая имена клиентов, их адреса, данные платежных карт и историю заказов. Вот как могут быть определены требования к вводу и выводу данных:
- Data Type Handling:
Customer names (текст). Имена должны быть проверены на наличие допустимых символов, а все специальные символы должны быть экранированы для предотвращения SQL-injection и XSS атак.
Payment card details (номера). Номера карт должны быть зашифрованы при передаче и надежно храниться в соответствии со стандартами PCI DSS.
Order history (структурированные данные). История заказов должна храниться и передаваться в защищенном виде с контролем доступа, ограничивающим возможность просмотра этих данных.
Content-Specific Handling: Конфиденциальная информация, например данные платежных карт, должна обрабатываться с применением повышенных мер безопасности, включая шифрование и безопасное хранение.Имена и адреса клиентов должны защищаться как персональные данные в соответствии с действующим законодательством о защите информации.
Legal and Regulatory Compliance: При работе с данными платежных карт приложение должно соответствовать стандарту PCI DSS, включая шифрование, контроль доступа и регулярную оценку безопасности.При работе с персональными данными необходимо соблюдать требования законодательства о защите данных (например, GDPR).
Определив такие четкие требования к входу и выходу, обеспечивается корректная и безопасная обработка данных, снижается риск утечки информации и нарушения нормативных требований.
Другой пример, пусть есть веб-приложение, которое собирает и отображает пользовательский контент, включая текстовые сообщения и изображения, и необходимо обеспечить безопасную работу с этим контентом в соответствии с требованиями законодательства о персональных данных (например, GDPR).
В данном примере:
- Вводимый пользователем текст обрабатывается функцией process_text_input, которая выполняет проверку и очистку ввода для предотвращения от SQL injection и cross-site scripting (XSS).
- Загрузка файлов (изображений) осуществляется функцией handle_image_upload, которая проверяет тип файла, его размер и надежно сохраняет загруженный файл.
- Структура кода обеспечивает безопасную обработку и хранение конфиденциальных данных, таких как пользовательский контент и загруженные файлы, в соответствии с требованиями по защите персональных данных.
Remediation:#
Чтобы выполнить данное требование необходимо:
- Document Input and Output Requirements:
Задокументировать требования к вводу и выводу данных для приложения. В этой документации должно быть указано, как обрабатываются и передаются данные различных типов.
- Data Classification:
Классифицировать данные, с которыми работает приложение, в зависимости от их чувствительности и содержания. Определить, какие данные относятся к категории чувствительных (например, персональные данные, финансовые данные), а какие - к менее чувствительным (например, публичная информация).
- Compliance Assessment:
Определить соответствующие законы, нормативные акты и политики, которым должно соответствовать приложение. Общие примеры включают GDPR, HIPAA, PCI DSS и отраслевые нормативные акты.
- Align Requirements with Compliance:
Убедиться в том, что требования к вводу и выводу данных соответствуют требованиям нормативных документов. Например, если приложение работает с данными о здравоохранении, требования должны соответствовать нормам HIPAA.
- Data Handling Guidelines:
Определить четкие рекомендации по обработке различных типов данных. Включить подробные сведения о проверке, обеззараживании, шифровании и хранении данных.
- Security Controls:
Внедрить контроль безопасности для защиты данных при обработке и передаче данных. При необходимости использовать шифрование, контроль доступа и логи аудита.
- User Access Control:
Реализовать контроль доступа пользователей к конфиденциальным данным. Убедиться, что только авторизованные пользователи имеют доступ к данным, которые им разрешено просматривать.
- Data Retention and Deletion:
Определить политику хранения и удаления данных. Определить, как долго должны храниться данные и как они должны быть безопасно удалены, если они больше не нужны.
- Data Flow Diagrams:
Создать data flow diagrams, иллюстрирующие движение данных через приложение. Это поможет выявить потенциальные слабые места в системе безопасности и точки обработки данных.
- Security Testing:
Провести тестирование на безопасность, включая тестирование на проникновение и сканирование уязвимостей, чтобы убедиться в том, что приложение соответствует установленным требованиям к входу и выходу.
- Review and Update:
Регулярно пересматривать и обновлять входные и выходные данные, чтобы обеспечить их соответствие изменяющимся требованиям и передовым методам обеспечения безопасности.
Предположим, что приложение обрабатывает данные платежных карт и должно соответствовать стандарту PCI DSS. В требованиях к входным и выходным данным указано следующее:
- Данные платежных карт должны быть зашифрованы при передаче и хранении.
- Контроль доступа должен ограничивать доступ к данным платежных карт только для авторизованного персонала.
- В логах аудита должны фиксироваться все действия, связанные с данными платежных карт.
Если в результате оценки безопасности выясняется, что данные платежных карт не зашифрованы должным образом, то для устранения недостатков необходимо внедрить необходимые контроли шифрования и его проверкой на надежность.
Выполнение этих шагов, а также постоянный мониторинг и обновление требований к вводу и выводу данных позволяют обеспечить безопасную обработку данных в приложении в соответствии с требованиями законодательства.
Additional:#
https://www.cgisecurity.com/owasp/OWASPBuildingSecureWebApplicationsAndWebServices-V1.1.pdf