#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 или мой метод выше-единственный способ?