Sizin kod güvenli görünüyor, ama tasarım bazı iş gerekebilir.
SQL Injection
Kodun tehlikeli kısmı veritabanında bir şey depolama ya da kullanıcı için bir şey gösteren, yani kullanıcıdan toplanır. Yani, parçası öncesinde örnek oluşur dikkatli olmak zorunda. Eğer filtreleme, doğrulama ve şifre ve reklam bilgiler dahil olmak üzere kullanıcı toplamak herhangi bir veri, kaçıyorlar emin olun.
Encryption
Veritabanındaki parola saklamanın avantajı da onu kaybedersiniz eğer kullanıcı e-posta veya başka yollarla parolasını almak sağlayabilirsiniz olmasıdır.
Eğer mağaza şifreleri yaparsanız birileri veritabanına erişimi okuma yönlendirmek mümkün olup olmadığını, onlar düz metin olarak tüm şifreleri okuyamıyor böylece Ancak, size, gizli bir anahtar kullanarak, onlara şifreli saklamak gerekir. Yine de, bir yerde gizli anahtarı saklamak zorunda gidiyoruz, ve birinin gizli anahtarı alır ve veritabanına erişimi varsa, onlar şifreleri tüm erişimi olacaktır.
Hash Values (recommended)
Bu en iyi uygulama ve yerine gerçek şifreleri sadece veritabanında şifreleri tek yönlü hash değerleri (SHA1 veya SHA256) depolamak için daha güvenli bulunuyor. Bu şekilde, parolayı alamaz. Hash değerleri bilerek bazı verileri atmadan tek yoldur.
Bunun yerine orijinal şifre almak yerine, kullanıcının girdiği şifreyi karma ve maçları görmek için saklanan karma değere karşı karma değerini karşılaştırın. Bu durumda kullanıcı şifresini kaybederse, yerine kullanıcıya şifreyi e-posta gönderme, sen kullanıcıya yeni, rasgele oluşturulmuş bir şifre e-posta.
Sadece hash değerini saklama kullanıcı veritabanına okuma erişimi olsa bile, karma değerler hiçbir avantajı sunan bu yana, hatta daha verilerinizi korur ve hash değerlerinin tüm kilidini olacak sır anahtarı yoktur.
Eğer şifreleri karma yaparken, gökkuşağı saldırılara karşı sağlamalarının listenizi korumak için rastgele bir tuz değerini kullanın ve tuz saklamak için emin olun.
Summary
Bazen şifre seçmek için alamadım. Mümkün olduğunda bazen şifre başka bir sistem geliyor, bu yüzden her zaman bir seçim yok, ve bazen üstleri (hatta belki de kullanıcılar) onlar şifreleri almak mümkün olmasını talep edecektir, ancak, daha güvenli seçenek seçmelisiniz .
Bu şifreleme ve hash değeri tüm iş sadece kısmi verilere sadece okuma erişimi elde edebiliyoruz insanlara karşı sunucusu korur unutmayın. Bazen, veri almak, bir ödül yeter, bu nedenle kullanıcı parola karma okuyabilir, onlar kredi kartı numaraları okuyabilir?
Eğer veritabanını korumak gerekir. Eğer veritabanı sistemi üzerinde güvenli bir şifre var mı? Yalnızca veri yerel erişim izin veriyor musunuz? Eğer uygulamada kullanmak için en az ayrıcalıklara sahip bir veritabanı kullanıcı oluşturduk? Eğer düzgün bir SQL enjeksiyonu ve betik saldırılarına karşı kendinizi korumak mı?
Birisi okuma ve veri yazma erişimi varsa, tüm şifre iş tartışmalı olur.