Database
Kodunuz tarafından bakılırsa ben not (06/12 gibi 2.0.2) en son sürümünü kullanarak CI görüyorum.
2.0 sürümü olarak terk edilmiştir (şimdi get_where()
denir) changelog getwhere()
fonksiyonu belirtildiği gibi. Orada arada bugfixes bir çok olmuştur ve her zaman mevcut en güvenli sürümü güvenmek gerektiği gibi
orada everty uygulamaya gelince size şiddetle, geçerli sürüm yükseltme önerdi ediyoruz.
mysql_real_escape_string usually is considered 'enough' to give a good level of safety in your queries, but as it happend to its predecessor (mysql_escape_string) it isn't 100% safe against all kind of attack, so relying interely on that is not the best practice around. Although safe, there are still attacks that can go past this filter.
Check, among the many, this question on SO for further information about this.
In codeignier:
If you were developing your custom application, I'd suggest you to at least use the mysqli extensions or, better yet, the PDO class; prepared statements are undoubtely safest and should be favoured over everything else.
But we are in the framework context, and Codeigniter comes with 3 great ways of safely querying your database, applying the right tool to the right input without you having to worry about that. I'm talking about query bindings and manual escaping with $this->db->escape() family and the Active Record Class
You can find examples of use at the urls I just linked, or read the answers from other peers here, so I won't go into the details of each procedure in this post.
Password
Parolanızı ile ilgili olarak, zaten diğer kullanıcılar tarafından belirtildiği, md5()
a şimdi kusurlu karma alghoritm olduğunu. Orada gökkuşağı tabloları orada zaman görece kısa bir miktarda sizin md5 şifrenizi çatlak vardır, böylece sha1() veya sha256, sha512, and other gibi yüksek güvenlik düzeyi karma algorhytms, ile daha iyi
In codeigniter:
Codeigniter comes with a security helper class, which provides you with a handy function, do_hash()
(might be dohash()
in your older installation), which can be given the hashing alg. as paramter (currently I think it supports only md5 and sha1) and defaults to sha1() anyway.
Other observations
Ben size, SQL enjeksiyonu için giriş suçu neden tamamen net değilim. Bu bütün uygulama sadece 2 formları vardır?
Eğer $ _GET parametrelerini kullanın veya yerel URI segmentasyonu takip ederseniz anlatmak için bilgi sağlamak dind't, ama ben bu yüzden bu bakış güvenli konum varsayalım böyle yapıyoruz inanıyorum.
/> aksi takdirde istediğiniz ne kadar giriş güvenli, emin sonra başka hiçbir giriş formu giriş veritabanına girmeden içeren web var ki yapmak gerekir, ama birisi bir zemin üzerinden nüfuz ve okumak oradan veritabanı tablosu ve "meşru" bir şekilde web sitenize giriş olsun.
Ayrıca, örneğin, bir compromized çerez gibi, saldırı başka bir kaynak olabilir. Tavsiye, bir çerçeve kullanmayı tercih (ve kendinizi kendiniz sıfırdan ve tüm gelişmekte olan daha büyük bir iyilik yapıyoruz) ne zaman aşağı güvenlik söz konusu expecially, onun özelliklerinden ÇOK kullanma eğiliminde gereken bir parça olarak. Bu çok büyük ve çok hassas bir soru, yani MUST Bu konu en üst öncelik vermek, ve büyük bir topluluk ve sık güncellemeler ile iyi geliştirilmiş bir çerçeve, alabilirsiniz emniyete için yakın.
Therefore, you're adviced to update CI kurulum (kılavuzlar here kendi kılavuzunda bulunabilir. Sürümünü seçin ve talimatları izleyin), hep Don her görev için verilen konum üst araçlarını kullanın ve 't kapıyı engelleme windows bir saldırı güvenli yapacak düşünüyorum. Her zaman iyice kontrol edin ve tüm possibile nedenlerini araştırmak.
Late Addendum: XSS, CSRF, oturum tespitler ve diğer sıcak güvenlik sorunlarını unutmayın.