Skip to main content

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:#

Требование подчеркивает важность определения четких правил ввода и вывода данных для приложения. Эти правила должны определять порядок обработки данных с учетом различных факторов, включая тип данных, их содержание и соответствие законодательству, нормативным актам и политикам.

  1. Input и Output Requirements:

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

  1. Data Handling and Processing:

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

  1. Consideration of Data Type:

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

  1. Content-Specific Handling:

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

  1. Legal and Regulatory Compliance:

Соответствие законодательству, нормативным актам и политикам имеет решающее значение для многих приложений, особенно для тех, которые работают с конфиденциальными данными (например, GDPR, HIPAA, PCI DSS). Требования к вводу и выводу данных должны обеспечивать их обработку в соответствии с этими требованиями. Например, обеспечение защиты персональных данных (PII) в соответствии с нормами.

  1. 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).

from flask import Flask, request, render_template
import os
app = Flask(__name__)
# Define a directory for storing user-uploaded images
UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
# Ensure that the uploads directory exists
if not os.path.exists(UPLOAD_FOLDER):
os.makedirs(UPLOAD_FOLDER)
# Define a function to validate and process text input
def process_text_input(text_data):
# Implement input validation and sanitization for text data
# Example: Check for SQL injection, XSS, and sanitize input
sanitized_text = sanitize_input(text_data)
return sanitized_text
# Define a function to handle image uploads
def handle_image_upload(file):
# Implement input validation and security checks for file uploads
# Example: Check file type, size, and store securely
if is_allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return filename
else:
return None
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
# Handle user-generated text
user_text = request.form['user_text']
sanitized_text = process_text_input(user_text)
# Handle file upload (image)
uploaded_file = request.files['image']
if uploaded_file.filename != '':
image_filename = handle_image_upload(uploaded_file)
# Store sanitized text and image filename securely in the database
# Implement database storage with proper security controls
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)

В данном примере:

  • Вводимый пользователем текст обрабатывается функцией process_text_input, которая выполняет проверку и очистку ввода для предотвращения от SQL injection и cross-site scripting (XSS).
  • Загрузка файлов (изображений) осуществляется функцией handle_image_upload, которая проверяет тип файла, его размер и надежно сохраняет загруженный файл.
  • Структура кода обеспечивает безопасную обработку и хранение конфиденциальных данных, таких как пользовательский контент и загруженные файлы, в соответствии с требованиями по защите персональных данных.

Remediation:#

Чтобы выполнить данное требование необходимо:

  1. Document Input and Output Requirements:

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

  1. Data Classification:

Классифицировать данные, с которыми работает приложение, в зависимости от их чувствительности и содержания. Определить, какие данные относятся к категории чувствительных (например, персональные данные, финансовые данные), а какие - к менее чувствительным (например, публичная информация).

  1. Compliance Assessment:

Определить соответствующие законы, нормативные акты и политики, которым должно соответствовать приложение. Общие примеры включают GDPR, HIPAA, PCI DSS и отраслевые нормативные акты.

  1. Align Requirements with Compliance:

Убедиться в том, что требования к вводу и выводу данных соответствуют требованиям нормативных документов. Например, если приложение работает с данными о здравоохранении, требования должны соответствовать нормам HIPAA.

  1. Data Handling Guidelines:

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

  1. Security Controls:

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

  1. User Access Control:

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

  1. Data Retention and Deletion:

Определить политику хранения и удаления данных. Определить, как долго должны храниться данные и как они должны быть безопасно удалены, если они больше не нужны.

  1. Data Flow Diagrams:

Создать data flow diagrams, иллюстрирующие движение данных через приложение. Это поможет выявить потенциальные слабые места в системе безопасности и точки обработки данных.

  1. Security Testing:

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

  1. Review and Update:

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

Предположим, что приложение обрабатывает данные платежных карт и должно соответствовать стандарту PCI DSS. В требованиях к входным и выходным данным указано следующее:

  • Данные платежных карт должны быть зашифрованы при передаче и хранении.
  • Контроль доступа должен ограничивать доступ к данным платежных карт только для авторизованного персонала.
  • В логах аудита должны фиксироваться все действия, связанные с данными платежных карт.

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

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

Additional:#

https://www.cgisecurity.com/owasp/OWASPBuildingSecureWebApplicationsAndWebServices-V1.1.pdf