2017-12-08 3 views
0

Ich versuche eine Lösung zu finden, um vertrauliche Kreditkartendaten aus dem Speicher zu löschen, nachdem sie an ein Zahlungsgateway kommuniziert wurden. Die meisten Zahlungsgateways scheinen die Klartextkartennummer als Zeichenfolge in der API zu erwarten. Wenn ich eine Zeichenfolge in C# verwende, kann ich den Speicher nicht löschen, da ich keine Kontrolle darüber habe, wann der Speicher als Garbage Collected erfasst wird. Das folgende dto-Snippet von einem SDK für CyberSource veranschaulicht mein Problem. Hinweis Ich versuche, die Anforderungen der PA-DSS-Version 3.2 zu erfüllen. 5.1.6.1 Die Codierungstechniken beinhalten die Dokumentation, wie PAN und/oder SAD im Speicher gehandhabt werden. Unser Prüfer gibt an, dass Klartextkontonummern nicht in einer C# -Stringvariablen gespeichert werden können.C# Clearing sensible Daten nach der Kommunikation mit Zahlungs-Gateways.

Wir haben Integrationen mit anderen Gateways, die auch dieses PAN in string variabler Ausgabe haben. Wie gehen andere mit diesem Problem um?

namespace CyberSource.Clients.SoapServiceReference 
{ 
    // 
    [DebuggerStepThrough] 
    [DesignerCategory("code")] 
    [GeneratedCode("System.Xml", "4.0.30319.34234")] 
    [XmlType(Namespace = "urn:schemas-cybersource-com:transaction-data-1.109")] 
    public class Card : INotifyPropertyChanged 
    { 
     public Card(); 

     [XmlElement(Order = 6)] 
     public string cardType { get; set; } 
     // 
     [XmlElement(Order = 5)] 
     public string cvNumber { get; set; } 
     // 
     [XmlElement(Order = 4)] 
     public string cvIndicator { get; set; } 
     // 
     [XmlElement(DataType = "integer", Order = 3)] 
     public string expirationYear { get; set; } 
     // 
     [XmlElement(DataType = "integer", Order = 2)] 
     public string expirationMonth { get; set; } 
     // 
     [XmlElement(Order = 1)] 
     public string accountNumber { get; set; } 
     // 
     [XmlElement(Order = 0)] 
     public string fullName { get; set; } 

Antwort

1
+0

Dank Chris - kann ich eine sichere Zeichenfolge verwenden, bis der Punkt, wo ich muss das Gateway die Nummer abgehen. Was ich tatsächlich tue. Ich bin wirklich überrascht, dass Gateways haben keine Möglichkeit, die CC-Nummer zu verschlüsseln, so dass die verschlüsselte Nummer anstelle der Klartext-Nummer gesendet werden kann. –

+0

Ich würde sagen, dass Kommentar ist wirklich eine separate Frage. „Ich versuche, eine Lösung für das Clearing von sensiblen Kreditkartendaten aus dem Speicher zu finden, nachdem es zu einem Payment-Gateway kommunizierte.“ Ist wirklich von dem Secure behandelt. Ich bin kein Experte mit dem Cybersource API, aber von ihrer Github Seite https://github.com/CyberSource/cybersource-sdk-dotnet#support-for-message-level-encryption es sieht aus wie sie Nachricht Level-Verschlüsselung unterstützen , die die gesamte SOAP-Nachricht verschlüsseln würde. –

-1

Eigentlich Sie haben eine solche Kontrolle. GC.Collect(). https://msdn.microsoft.com/en-us/library/xe0c2357(v=vs.110).aspx. Das Problem dort, dass Sie wissen sollten, wie GC funktioniert, um sicherzustellen, dass Ihr Objekt tatsächlich gesammelt wird. Es hängt stark von Ihrer Implementierung ab, daher kann ich nicht anders, als nur auf eine solche Möglichkeit hinzuweisen.

Verwandte Themen