Zaten söylenir gibi, web güvenliği hakkında endişe dikkate almak için birkaç şey vardır. Burada dikkate alınması gereken bazı temel ilkeleri şunlardır:
- Sorgular ve değişkenlerin entegre ediliyor kullanıcıların doğrudan giriş kaçının.
Yani bu araçlar $variable = $_POST['user_input']
gibi bir şey yok. Bu gibi herhangi bir durum için, kullanıcıya çok fazla kontrol teslim edilir. Giriş bazı veritabanı sorgusu etkiler ise, her zaman karşı kullanıcı girişi doğrulamak için beyaz listeler var. Sorgu bir kullanıcı adı için ise, iyi bir kullanıcı adlarının bir listesini karşı doğrulamak. Kullanıcı girişi hemen içeri düştü ile basit bir sorgu yapmak ETMEYİN
Bir (mümkünse) istisna bir arama dizesi içindir. Bu durumda, bu kadar basit, sterilize etmek gerekir.
- Sanitasyon olmadan kullanıcı girişi saklamaktan kaçının.
Kullanıcı profili oluşturarak veya diğer kullanıcılar için bilgi yükleme ise, kabul edilebilir ne tür veriler bir beyaz listesi var, ya da kötü niyetli olabilir şey dışarı atmak için ya var. Bu sisteminizin güvenliği için, ama diğer kullanıcılar için (sonraki noktaya bakınız.) Sadece
- Arindirilarak olmadan tarayıcı bir kullanıcı ASLA herhangi çıktı.
Bu muhtemelen güvenlik danışmanları bana vurguladı olması en önemli şeydir. Sen sadece o kullanıcı tarafından alındığında girişini sterilize güvenemez. Eğer çıktıyı kendiniz yazmadım eğer, her zaman çıkış herhangi bir HTML karakter kodlama veya <plaintext>
etiketi sarılarak zararsız olduğundan emin olun. A kullanıcısı bu sayfayı görüntülemek başka kullanıcıların aleyhine javascript biraz yükler eğer geliştirici kısmında basit ihmal olduğunu. Herhangi ve tüm kullanıcı çıktı hiçbir şey ama tüm tarayıcılarda metin olarak görünebilir bilerek geceleri daha iyi uyku olacaktır.
- Herkes ancak kullanıcı form kontrol asla izin vermeyin.
XSS olması gerekenden daha kolaydır ve bir paragrafa karşılamak için gerçek bir ağrı. Basitçe bir form oluşturduğunuzda, koyun kullanıcıların form verilerini idare edecek bir komut dosyası erişim veriyoruz. Birinin oturumu veya birinin çerez çalmak eğer ben form sayfasındaki oldu sanki, ben şimdi komut konuşabilirsiniz. Ben beklediği veri türünü ve bunun için bakacağız değişkenlerin isimlerini biliyorum. Ben kullanıcı ve komut farkı söyleyemem sanki sadece bu değişkenler iletebilirsiniz.
Yukarıdaki sanitasyon ancak kullanıcı doğrulama meselesi değildir. Benim son nokta doğrudan bu fikri ile ilgili.
- Kullanıcı doğrulama veya rol doğrulama için çerezleri kullanmaktan kaçının.
Bir kullanıcının çerez çalmak olabilir, ben bir kullanıcı kötü bir gün emin olun daha fazlasını yapmak mümkün olabilir. Ben çerez "üye" olarak adlandırılan bir değeri vardır fark ederseniz, ben çok kolay "admin" bu değeri değiştirebilirsiniz. Belki de işe yaramaz, ancak birçok komut için, herhangi bir yönetici düzeyinde bilgi anında erişim olurdu.
Basitçe söylemek gerekirse, bir web formu sabitlemek için kolay bir yolu yoktur, ancak ne yapmaları gerektiğinin basitleştirmek temel ilkeleri vardır ve böylece komut güvence stres kolaylaştırır.
Iyi ölçmek için bir kez daha:
- Tüm girdileri
- Tüm çıktı Encode
- Sıkı bir beyaz listeye karşı yürütülmesi için kullanılan herhangi bir giriş doğrulamak
- Giriş gerçek kullanıcıdan gelen olduğundan emin olun
- Herhangi bir kullanıcı veya rol tabanlı doğrulama browser-side/user-modifiable yapmak asla
Ve herhangi bir kişinin liste ayrıntılı ya da mükemmel olduğunu varsayalım asla.