Güvenli bir PHP sayfaları arasında kredi kartı bilgileri geçmek için nasıl

6 Cevap php

Nasıl güvenli bir şekilde PHP sayfaları arasında kredi kartı bilgilerini geçmek? Ben bir e-ticaret uygulaması inşa ediyorum ve ben bu gibi ödeme geçmesi için kullanıcıların istiyorum:

Bilgilerini Girin -> İnceleme -> Sonlandır Sipariş

Sorun ben güvenle kullanıcı I (Sonlandırma Sipariş aşamasında) bunu işlemek için onları girince kredi bilgi aktarmak için nasıl emin değilim olmasıdır. Ben oturumları kullanarak bile şifreleme ile, güvensiz olduğunu duydum.

Herhangi bir yardım mutluluk duyacağız!

6 Cevap

Ben her yerde saklayın olmaz. Bu bir risk çok fazla ve belki etik değil.

Https üzerinden form göndererek ödeme ağ geçidi için bir istek gönderin ve sadece işlemin sonucu depolamak.

Işlem onaylanmış veya reddedildi varsa muhtemelen sadece bakım. Kim sayı ne umurunda?

Oturumda kredi kartı bilgi depolamak etmeyin, bir veritabanına saklamak değil, bir dosyaya tutmayın. Bunun yerine, gizli bir html girdiler geri inceleme sayfasına cc bilgi yazmak.

Yani program akışı şu şekilde çalışacak:

  1. Bir html formu aracılığıyla sunucuya kullanıcı mesaj ödeme ve fatura bilgileri.
  2. Sunucu (yani, kredi kartı fatura adresi girilmemiş basamak uygun sayıda, vb vardır) bu bilgi doğru biçimde olduğunu doğrular
  3. Doğrulanmasının ardından, sunucu gizli form giriş alanları olarak sunulan tüm bilgileri geri yazar. Bu fatura adresi, teslimat adresi ve kredi kartı bilgi içerir.
  4. (Gizli giriş alanları ile) incelemesi sayfasında formu "Siparişi Tamamla" / "Complete Order" etiketli bir düğme vardır. Finalize sipariş script Bu inceleme formu mesajlar.
  5. Finalize script veritabanında fatura / nakliye bilgi depolayan ve ödeme ağ geçidi kredi kartı bilgileri gönderir.

Bu yöntemin avantajı, iki kat vardır:

  1. Kredi bilgileri saklarken gerekli olan ek PCI uyumluluk yükü ve maliyet tasarrufu.
  2. Bu yöntem, SSL protokolünün güvenlik sınırları içinde kalır. Bu yöntem kredi kartı verileri ısrar karmaşıklığı tanıtan olmadan, sadece SSL etkinliği güvenmeye devam ediyor - yani, şifreli kredi kartı bilgileri hiçbir durumda sunucuya sunulmak zorunda olacak.

Bu son nokta başka endişe uyandırmaktadır - Eğer şifreli kredi kartı veri ağ üzerinden iletilen sayısını iki katına konum inceleme sayfasını alarak. Bu yöntemle 4 yayınlar asgari vardır: istemci sunucu, sunucu istemci, istemci sunucu (tekrar) sonra sunucu ağ geçidi. Istemci sunucu ve sunucu ağ geçidi: inceleme olmadan 2 yayınlar asgari vardır. Ekstra yayınlar riske değer bir inceleme sayfasına kolaylık mı? Yani bir web geliştirici (ve istemci) olarak yapmak için olsun bir karar.

Peki, ilk önce bağlantı şifreli olduğundan emin olmak için HTTPS protokolünü kullanıyor olmalıdır.

Bundan sonra, $_SESSION süper küresel veri depolayabilir. Veriler sunucularında saklanan, bu nedenle oldukça güvenlidir.

Eğer anahtar bir GUID ya da oldukça rastgele ve benzersiz başka bir şeydir bir sipariş veritabanı içine bilgi ekleme benzer bir teknik yapabilirdi. Kişinin sırasını gözden / değiştirmek için gittiğinde Ardından, Sipariş No URL GET bölümünde depolanan (veya paranoyak iseniz, bir çerez / oturum değişken) sahip olmalıdır:

 https://example.com/order?orderID=akjgflkhaslasdfkjhalsdjkljahs

Ekstra güvenlik sağlamak için, ayrıca Sipariş Tablo bir IP Adresi saklamak ve IP ve Sipariş Kimliği maç emin olabilir.

Bir alternatif Authorize.net's Customer Information Manager (başkaları da var) gibi bir ödeme profil hizmeti kullanmaktır. Aslında kartınızdan zaman onların API aracılığıyla bir profilde ödeme bilgi depolamak, daha sonra profil kimliğini kullanın. Bu şekilde sizin sunucularda veri depolama asla ediyoruz.

Benim uzmanlık alanı, ama ben bir oturumda saklamak istiyorum ama aynı zamanda CSRF saldırıları önlemek için bir "senkronize belirteci" (veya ne olursa olsun çocuklar bu gün diyorlar) kullanmak düşünüyorum.

Tabii, vb, (doğru) https kullanarak URL ve gizli alanları hassas verileri kaçınarak, vs, hiç bir tepki çok hassas bilgileri koyarak kaçınarak olmak istiyorum

Ben kabul etmek gerekir düşünüyorum. Kredi kartı numaraları saklamak çok büyük bir risk ve sonuçları çok zorlama olabilir.

Ideal yolu üçüncü bir işlemciye bilgi aktarmak için olacak ve sadece sonuç script mantığı kalıp döndü kullanabilirsiniz.

if (transaction){
     // code goes here
}
else{
     // code goes here
}

Eğer noktası olsun ... :) Umut