Ne güvenlik sorunları PHP için dışarı bakmak gerekir

13 Cevap php

Ben sadece öğrenme PHP başlayan, uzun bir süre için ASP.Net web uygulamaları geliştirme oldum. Ben bakan olması gereken herhangi bir PHP specific güvenlik hataları varsa ben merak ediyordum.

Yani, benim soru her bir PHP geliştiricisi bilmeli üst düzey güvenlik ipuçları budur.

Kişi etkin aşağı yukarı oy böylece cevap başına bir ucuna saklayın.

13 Cevap

Kullanmaktan kaçının register_globals

burada iyi PHP güvenlik programlama uygulamaları bir bağlantıdır.

http://phpsec.org/

Güvenlik sorunları çoğu kullanıcı girişi (doğal olarak) ve onlar üzerinde sıkmayın emin etrafında döner. Daima girişi doğrulamak emin olun.

http://htmlfixit.com/cgi-tutes/tutorial_PHP_Security_Issues.php

(Belirli bir sırayla Adet)

  1. Her zaman kontrol register globals OFF
  2. Her zaman kontrol magic quotes OFF
  3. Emin olun anlamak SQL injection attacks
  4. error reporting üretiminde KAPATIN

EDIT: "yeni başlayanlar" için orada bu yüzden temel (ve ben bu açıklamaya vaktim beri):

  1. Küresellerle Ol bir sapma olduğunu. Bu, şimdiye kadar son güvenlik delik. Register_globals açıksa Örneğin, url http://www.yourdomain.com/foo.php?isAdmin=1 hiçbir kod gerekli olan global bir değişken olarak $ IsAdmin ilan edecek. Ben bu "özelliği" PHP için yol yaptı Neden bilmiyorum, ama the people behing this should have the following tattooed on their forehead: "I invented PHP Register Globals" so we can flee them like pest when we see them! yok

  2. Magic tırnak PHP için yol yapmış bir başka aptalca bir fikir. Temelde, PHP AÇIK otomatik olarak tırnak kaçış ne zaman ('\ olur' ve "olur \") SQL enjeksiyon saldırıları ile yardımcı olmak. Kavramı (enjeksiyon saldırıları önlemek) kötü değil, ama all GET kaçan, POST ve COOKIE değerleri (örneğin, görüntüleme ve veri zaman her şey Unescape var) kod çok karmaşık hale getirmektedir. Bir gün kodunda herhangi bir değişiklik yapmadan bu ayarı OFF geçerseniz artı, tüm kodu ve / veya veri kırık ve (evet sizin ON savunmasız bile) enjeksiyon saldırıları için (hatta daha fazla) savunmasızdır.

  3. Sizin databse veri sitenizde en değerli şeydir. Sen onunla karmaşa insanların istiyorum, bu yüzden kendinizi korumak ve bu düşünce ile and kod bu konuda bir şeyler okumam.

  4. Yine bu güvenlik endişelerine yol açabilir. Hata mesajı kod çalışır nasıl hackes için ipuçları verebilir. Ayrıca bu mesajları ziyaretçiler için bir şey demek istemiyorum, neden onları ekmek?

XSS ve enjeksiyonlar için "Kayıt Küresel Değişkenler" ve filtre kullanıcı girişi kullanmayın

Dil Vs Programcı. Sen en ciddi güvenlik açığı yazabilir ve bir uyarı veya hata iletisi almazsınız. Güvenlik Açıkları kodunuzu 2 karakterler ekleyerek veya kaldırarak kadar basit olabilir. PHP uygulamalarını etkileyen açıkları farklı yüzlerce çeşit vardır. Onlar en popüler çünkü çoğu insan XSS ve SQL Injection düşünüyorum.

OWASP top 10 okuyun.

Bir mysql veritabanı kullanıyorsanız veritabanına veri gönderirken emin mysql_real_escape_string çağrı yapmak

Güvenlik önlemleri ton vardır. PHP ve Web Uygulaması Güvenlik: Ben bir kitap Chris Shiflett tavsiye ederim.

http://phpsecurity.org/

PHPSec Guide iyi bir bakış verir.

PHP ile ilgili güvenlik sorunları çoğu çözümlenmemiş "dışarıdan" (GET / POST / COOKIE) değişkenleri kullanarak geliyor. İnsanlar dosya kaçağı ya da sql enjeksiyon sonuçlanan, doğrudan dosya yolları veya sql sorguları içine veri bu tür koymak.

OWASP uygulamalarda büyük sorunlar bugün güvenlik sorunları içgörü bir sürü sağlar. Onlar mevcut bir PHP adanmış sayfa var olduğunu görmek güzel

http://www.owasp.org/index.php/PHP_Top_5

Genellikle tanıtım öğreticiler kullanıcıların verileri denetleme konusunda hiç konuşmak yok. Tüm programlama ortamlarının gibi, kullanıcıların almak verileri güven asla. Sisteminizi korumak için is_numeric(), isset() gibi fonksiyonlarını kullanmayı öğrenin ve mysql_real_escape_string().

Eğer uzak dosyaları, ve diğer yaratıcı şeyler erişmek için izin özellikleri de vardır. Eğer iyi nasıl ve ne zaman onlar (genellikle güvenlik nedeniyle devre dışı) çalışmak anlamak zorunda kadar ben o önlemek istiyorum.

Mümkün (diyorum "neredeyse" Orada onlar işe yaramazsa birkaç kullanım olgu), ve çünkü uğraşırken bile zaman kullanıcı girişi ile ilgili zaman (tutorial. Neredeyse bir zorunluluktur hazırlanmış ifadelerini kullanan girişi ile, onlar daha iyi performans yol açabilir cabası. alışkanlığı tutmak ve bir LOT daha kolay, sen parça parça hijyenikleştirmeye daha şeyler salıncak, içine almak.