Как защитить/зашифровать данные кредитной карты в Http-методе .NET Core REST API?

#c# #.net #asp.net-web-api #swagger

Вопрос:

У меня есть вызов метода HTTP Post на моем платежном шлюзе DIY experiment, как показано ниже:

 public IActionResult PostPayment([FromBody][Required] GatewayPostDto data) {

}
 

где GatewayPostDto есть различная платежная информация, такая как номер кредитной карты, валюта, cvv и так далее, как показано ниже:

 public class GatewayPostDto {
        [Required, Display(Name = "Card Holder Name")]
        public string CardHolderName { get; set; }

        [Required, CreditCard, Display(Name = "Card Number")]
        public string CardNumber { get; set; }

        [Required, Display(Name = "Expiration Month"), Range(0, 12)]
        public long? CardExpiryMonth { get; set; }

        [Required, Display(Name = "Expiration Year"), Range(2021, 2100)]
        public long? CardExpiryYear { get; set; }

        [Required, Display(Name = "CVC Security Code"),
         RegularExpression("^[0-9]*$", ErrorMessage = "CVC security code can only contain numbers")]
        public string CardCvc { get; set; }
    }
 

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

Как я могу сохранить данные кредитной карты, предоставленные при вызове метода HTTP Post?

Возможно ли это? Если да, не могли бы вы привести мне пример?

P/S: Я создаю метод вызова HTTP Post с помощью swagger, который выглядит следующим образом: введите описание изображения здесь

Комментарии:

1. Ты идешь по кроличьей норе. Единственная причина, по которой вы «защищаете» что-то, заключается в том, что вы знаете , каким может быть вектор атаки, и пытаетесь смягчить его, усложняя выполнение этого вектора атаки. Итак, какие векторы атак на безопасность вы пытаетесь смягчить?

2. @gunr2171, поскольку номер кредитной карты указан в DTO — как вы можете видеть в curl заявлении от swagger, может ли кто-нибудь подслушать его? Какова наилучшая практика сохранения данных кредитной карты в DTO?

3. «может ли кто-нибудь подслушать это», если вы используете HTTP, абсолютно. Если вы используете HTTPS, вероятно, нет, но это возможно. «Веб-безопасность» — очень большая тема.

4. @gunr2171, с точки зрения Rest API, есть ли другой лучший способ хранения данных кредитной карты в DTO или мой метод выше-единственный способ?