PHP güvenlik soru?

8 Cevap php

Ben sadece makaleleri kabul eden bir web sayfası oluştururken bazı temel PHP güvenlik teknikleri kullanmalıyım ne olduğunu bilmek istedi?

PHP oldukça yeni ve ben bir güvenlik uzmanı değilim kadar aşağı ne kaleyi tutacak merak ediyorum?

8 Cevap

Daha sonra gösterilecektir kullanıcı tarafından oluşturulan metin kabul ederken göz önünde iki cephe var.

Öncelikle, enjeksiyon saldırılarına karşı veritabanını korumak gerekir. Bunun için basit bir PHP fonksiyonu var: mysql_real_escape_string() genellikle bir alan değeri olarak saklamak için bu dize geçerken enjeksiyon veritabanı korumak için yeterli olacaktır.

Bu kod görüntülenir alır zaman HTML kodunu yüklemek için izin verilen bir kullanıcı other users kötü şeyler yapabileceği gibi oradan, size ekran konusunda dikkatli olmak gerekir. Eğer düz metin yazılar yapıyorsanız, sadece htmlspecialchars() çıkan metin olabilir. (Siz de muhtemelen etiketleri
için satırsonlarını dönüştürmek isteyeceksiniz.) Böyle bu sitede kullanılan Markdown motoru olarak, bir biçimlendirme çözümü kullanıyorsanız, bu çözümlerin genellikle motorun bir fonksiyonu olarak HTML korunmasını sağlayacak ama belgeleri okuyun ve emin olun emin olun.

Ah, siz de yazı göndermek için kullanılan GET / POST değişkenleri doğrulayarak emin olun. Söylemeye gerek yok, ve gerçekleştirilen doğrulama Siteniz mantığı ile ne yaptığını uygun olması gerekir gidiyor.

Bu geniş, belki bunu biraz daraltmak için çalışmalısınız etmektir.

What kind of security? For passwords? Do you want to restrict some stuff? SQL Injection? HTML Injection? Cross domain security?

Peki, diğer yanıtlar belirtildiği gibi, PHP betikleri tehlikeye edilebileceği farklı cephelerde bir dizi vardır.

Burada sadece bir çift vardır:

Her ile başa çıkmak için yollar vardır. İşte bakmak için bazı şeyler şunlardır:

Orada bilmek çok şey olduğunu ve en kısa sürede olabildiğince başlamalıdır.

Eğer yazı (ve muhtemelen bir WYSIWYG ve HTML kabul eden) kabul eğer biri için, içeriği ayrıştırmak ve XSS savunmasız ve benzeri bırakabilir şeyler şerit için bir şey kullanın.

Bir örnek HTML Purifier.

Bu Drupal veya CakePHP gibi bir çerçeve ile başlamak akıllıca olabilir. Bu şekilde her ikisi de güvenlik uyguladık şekilde öğrenmek ve zaten yapılmış olduğu gerçeği yararlanabilirsiniz. Öğrenme eğrisi vb kendi kimlik doğrulama mekanizmaları rulo zorunda kalmadan yeterince dik

belki iki ipucu daha güvenli web siteleri olsun yardımcı olabilir

  • Yalnızca seçer ve sayımları yapmak için hesabınıza okumak veritabanındaki iki kullanıcılarını oluşturmak ve güncelleştirmeleri, ekler veya siler yapmak zorunda hesap yazmak.
  • Eğer veritabanına eklemek veya silmek, girişleri sterilize etmek zorunda zaman, kullanımı mysql tablolarını veya posta yoluyla gelmesi veya bu şekilde olsun değerlerini iddia:

    if(!empty($_GET["integer_like_id_value"]){
        $integer_id_value = (int)$_GET["integer_like_id_value"];
    }else{
        // that stuff seems not to be legit, die application, log error ? whatever
        die();
    }
    

Proje kamu kullanımı için hazır olduğunda, genellikle (0) error_reporting ayarlamak iyi bir fikirdir;

Bu daha fazla güvenlik sağlamak değil, ancak bunun çok zor (genellikle) kötü adamlar siteniz ile olası güvenlik sorunları bulmak için yapar.