2009-09-03 15 views
5

Bir web geliştiricisi olarak PHP kullanıyorum ve güvenlik konusunda endişelenmem gerektiğini biliyorum, ancak bir çerçeve kullandığınızda çok fazla kod ve tasarımınız vardır, ancak bunu gerçekleştirmediniz. t kodu veya tasarım ve örneğin CakePHP kullanıyorum.php çerçeveleri ve güvenlik

  • bu durumda çerçevelerle, güvenlik konusunda ne kadar endişelenmeliyim?

cevap

9
Hep güvenliğin temel ilkelerine saygı devam etmelidir

:

  • kullanıcıya
  • tür anlamına kullanıcıyı

asla güvenme güvenmiyorum:

  • uygulamanıza gelen her şeyi filtreleyin/doğrulayın
  • herhangi bir çıkıştan kaçış. genellikle sık
  • Altyapıları kaçan ile mücadele etmesi çerçevesinin bazı katmanı, es

    • Çıktı veritabanına: dışında bu konuda pek değişmez bir çerçeve kullanılması


    filtreleme/doğrulama çözümleri sağlamak; bunları kullanın ;-)

  • Çerçeveler genellikle bazı yönergelere sahiptir; onları oku. Bir not olarak


: Dediğiniz bu:

yoktur

üzerinde röle ama dedin değil kod veya tasarım

bu kodu ve tasarım çok-bir

Çok sayıda kişinin kullandığı iyi bilinen bir çerçeve kullandığınızı düşünürseniz, bu kod muhtemelen yazabileceğin herhangi bir koddan daha fazla test edilmiş/incelenmiştir ;-)

Bu, açık kaynaklı bir avantajdır, aslında: siz kodun tek sorumlusu siz değilsiniz ve pek çok göz bunu gördü - bu da pek çok elin onu güçlendirdiğini gösteriyor.

4

Bir uygulamada güvenlik ile uğraşırken dikkat edilmesi gereken pek çok şey var. Pascal'ın dediği gibi, ona bakan bir dizi insanın sahip olduğu popüler bir çerçeveyi kullanmak iyi bir fikirdir. CakePHP ile ilgili olarak birkaç endişe alanı görüyorum.

İlk sorun son kullanıcı. Yaptığınız her sayfada birisinin aptalca bir şey yapmasını beklemeniz gerekir.Bunun bazı örnekleri şunlardır:

  • Gönder düğmesine tıklayarak bir kişi hızla tekrar tekrar. Bu, dikkatli değilseniz, sisteminizi çarpabilir veya dağıtabilir. Bunun için çözüm, çerçeveye değil, kodlama metodolojinize ve testinize dayanmaktadır.
  • SQL Enjeksiyon ve diğer kötü şeyler. Bir sayfadaki herhangi bir alan potansiyel olarak suistimal edilebilir, bu nedenle her form öğesi dezenfekte edilmelidir. CakePHP'nin bu güvenlik sorunlarına dikkat çekmek için basit yöntemleri vardır. http://book.cakephp.org/view/153/Data-Sanitization
  • URL'leri temizleyin çok önemlidir. Bir kullanıcının doğrudan tamsayı birincil anahtarlarına erişmesini sağlayan bir sistem tasarlamamalısınız. Örneğin,/show_user/2098 içeren bir siteniz varsa, bir başkasının hesabını görmek için birisi show_user/2097 yazabilir. CakePHP, bunun olmasını önlemek için sümüklü böcekleri veya UUID'leri kolayca birleştirmenizi sağlar. Kod ve izinlerin kendisi ile ilgili saldırılarla ilgilenmeniz gerekir. Örneğin: Son kullanıcıdan gelebilecek olan verilerden kodunuzdaki eval() veya system() öğesini hiçbir zaman kullanmayın. Geçtiğimiz yıllarda perlinde yazılmış ve bu konudan dolayı kaçırılan uygulamalar olmuştur.
  • Klasör yapısı ve izinler güvenlik açısından önemlidir. Kullanıcılar yazılabilir bir dizine girebilmek için hiçbir zaman erişime sahip olmamalıdır. CakePHP ile klasör yapısı, apache'yi doğrudan app/webroot'a yönlendirebileceğiniz şekilde tasarlanmıştır. Bu, tmp dizininin apache yolunun dışında olduğu ve sistemin biraz daha güvenli hale geldiği anlamına gelir.

Üçüncüsü, yönetim sayfalarınızın korunmasıyla ilgilenmeniz ve neye erişme iznine sahip olmanız gerekir.

  • CakePHP, hangi kullanıcıların hangi sayfalara erişebileceğini seçmenize izin veren bir Auth ve Acl bileşenine sahiptir. Bu, bir veritabanında saklanabilen, PHP kullanarak veya dosya sistemine yazılan özel Kek Oturumlarını kullanır.

Güvenlik açıkları olmadan bir uygulama oluşturduğunuzdan emin olmak için önemli bileşenlerden bazılarını okuma ve bunları düzgün şekilde ayarladığınızdan emin olmanızı öneririm. Daha fazla araştırma yaparken şu unsurlardan bazılarına göz atın: http://book.cakephp.org/view/170/Core-Components