Sobes.tech
Назад к вопросам
Junior — Middle
68

Каким образом вы организовывали защиту запросов в вашем проекте, и какие меры использовали для обеспечения безопасности?

Компании, где спрашивали
Ubic

Ответ от нейросети

sobes.tech AI

Для защиты запросов в Python-проектах обычно применяются следующие меры:

  • Аутентификация и авторизация: Использование токенов (JWT, OAuth), сессий или API-ключей для проверки прав доступа.
  • Валидация и санитизация входных данных: Чтобы предотвратить SQL-инъекции, XSS и другие атаки.
  • Использование HTTPS: Для шифрования трафика между клиентом и сервером.
  • Ограничение частоты запросов (rate limiting): Для защиты от DDoS и brute force атак.
  • CSRF-защита: В веб-приложениях для предотвращения межсайтовых подделок запросов.
  • Логирование и мониторинг: Для обнаружения подозрительной активности.

Пример использования Flask с JWT для защиты эндпоинта:

from flask import Flask, request, jsonify
from flask_jwt_extended import JWTManager, jwt_required, create_access_token

app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'super-secret'
jwt = JWTManager(app)

@app.route('/login', methods=['POST'])
def login():
    username = request.json.get('username')
    password = request.json.get('password')
    # Проверка пользователя
    if username == 'user' and password == 'pass':
        access_token = create_access_token(identity=username)
        return jsonify(access_token=access_token)
    return jsonify({'msg': 'Bad credentials'}), 401

@app.route('/protected', methods=['GET'])
@jwt_required()
def protected():
    return jsonify({'msg': 'Доступ разрешён'})

if __name__ == '__main__':
    app.run(ssl_context='adhoc')  # Запуск с HTTPS

Такой подход обеспечивает базовую защиту запросов и данных.