PHP, Yön ile şifreleme Yeni lütfen?

2 Cevap php

Ben kısa bir süre sonra dışarı temizlenmiş olacaktır kredi kartı numaraları kabul eden çok küçük bir form üzerinde çalışıyorum. Onlar veritabanında mevcut kez, ben onlara şifreleme rahat bir devlet var istiyorum. Ne yazık ki, web geliştirme, programlama ve veritabanı geliştirme benim yıllardır, ben bir kez şifreleme alanında kendimi eğitmek için fırsat oldu değil.

Ben hızlı bir şekilde uygulayabilirsiniz bu kredi kartı numaralarını şifreleyerek nispeten kolay uygulanması yöntemi var mı? Tüm bu işlevleri de, sınıf, hiçbir şey bir dizi işi, ve aferin alacak? Ben bu konuda kendimi eğitmek için bu fırsatı alıyorum, ama nedeniyle zaman duyarlılığı, doğru yönde sadece bir dürtmek daha fazla talep edilir.

Dil: PHP / Depolama: MySQL

2 Cevap

En iyi yollarından biri sadece şifreleme / şifre çözme için MySQL kullanmaktır. Bu fonksiyonları bakınız:

http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html

Ancak, bu veritabanını okumak için bir yol bulmak olabilir insanlara karşı sizi koruyacaktır olurken, bu sunucu sahibi birine karşı korumak değildir unutmayın. Şifre çözme anahtarı sunucuda mevcut olmasıdır.

Sonuçta, bu çok büyük bir destek var. Gerçek güvenlik, güvenli bir özel anahtar (örn. farklı sunucu) ile ortak anahtar şifreleme ve şifre çözme çevrimdışı gelirdi.


Örnek olarak:

INSERT INTO BillingInfo 
SET CCard = AES_ENCRYPT('4111...', 'super-secret-key')
...

ve

SELECT 
AES_DECRYPT(CCard, 'super-secret-key') 
...

The specific function is documented here:
http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html#function_aes-encrypt

For more information on AES, please see:
http://en.wikipedia.org/wiki/Advanced_Encryption_Stveard


Lütfen bir ortamda maksimum güvenlik için, ben bir PHP sabiti anahtarı saklamak öneririz. Bu şekilde (küçük bir detay) zamanında ifşa almak için daha az olasıdır.

Daha az 'kolay', ama uygulama (yalnızca sisteminin başka bir parçası tarafından okunan konum yani) kayıtlı kredi kartlarını geri okumak gerekir yoksa, böyle bir bilgiyi şifrelemek için açık anahtar kripto kullanabilirsiniz Kendi webapp deşifre edemez yolu.

Bu şekilde, bir saldırgan veritabanı ve WebAPP kendi komut hem erişmek bile, yine de kartı verilerini alamadım. (Muhtemelen daha saldırıya karşı aşağı kilitli) sistemin sadece diğer kart işleme kısmı onları deşifre edebilirsiniz.

Sen openssl_public_encrypt fonksiyonu ile başlamak istiyorum. example use