Veritabanı / PHP güvenlik sorusu

4 Cevap php

We are developing a very simple first stage GUI for a company database. At the moment our time to deliver is rather limited. So we thought about using a simple SQL stored procedure and retrieve all data. The data the users are allowed to see is depending on security levels defined in the database and also in our Active Directory. So after fetching all the data, the GUI displays only what the user has access to view / edit.

Bu yaklaşımın herhangi bir olağanüstü güvenlik sorunları varsa benim soru? Ayrıca webinterface ve veritabanı hem intranet bulunan unutulmamalıdır.

Bizim arka uç w2k3, IIS, PHP 5, SQL 2005 kullanır

Herhangi bir geribildirim büyük takdir

Jonas

4 Cevap

(1month yaklaşık) teslim süresi göz önüne alındığında, oldukça ok olmalıdır.

Ilk şey: sadece intranet olduğundan, siteniz çok dış dünya sitenize erişen olamaz beri güvence altına alınmalıdır.

ikincisi, XSS ve çapraz site isteği sahtekarlığı ne olursa olsun devre dışı bırakılmalıdır.

sonraki SQL enjeksiyon.

Akılda bu birkaç şey ile, uygulama temelde güvence altına alınmalıdır.

Iç ağınızdaki bir dışa dönük bir web sunucusu koymayın. Cidden. Bir DMZ koy.

Veri Web ön uç vurur önce veya sonra kadarıyla veri söz konusu olduğunda, kullanıcı erişimine dayalı filtreleme olacak? Ben proc yapıyor öneririm.

Eğer Ayrıca, ben güvenlik için, hem de ayrı bir kutunun üzerinde DB koyarak öneririm.

Bu bir ses yeterince yaklaşımdır. Bu şekilde veriler kullanıcı veritabanında kalıntılarını görmek için izin verilmez.

"Tüm verileri getiriliyor sonra, GUI kullanıcı / düzenleyebilir erişimi sadece ne görüntüler yüzden."

Web sitelerinde erişim kontrolü ile ilgili bir sık ​​hata senaryo getiriliyor veri için bunları uygulamak, ancak veri yazma senaryo değildir. Bu genellikle "kullanıcı sadece biz o düzenleme olabilir ona kaynaklara istekleri düzenleme bizi gönderir" varsayımın sonucudur. Ne yazık ki ...

Ben senin soru içeriğinde bu nokta coudln't gibi, ben sadece veri değiştirme istekleri alırken GUI bina değil, aynı zamanda ne zaman etkili erişim kontrolü ele emin tavsiye ederim.

: Biz aşağıdaki senaryoyu düşünün

  1. Kullanıcı o meşru erişim sahip verileri getirir.
  2. Bunun kullanıcı istekleri sürümü veri söyledi. Adlı bir baskı biçimi artık görüntülenir düşünelim.
  3. Kullanıcı değişikliklerle formu gönderir.
  4. Onu Makineyi terk etmeden önce, kullanıcı HTTP isteği yakaladığını ve başka tanımlayıcı tarafından düzenlenen kaynak tanımlayıcı yerine, hangi o erişimi olmamalıdır için.

Senin modeli düzenleme isteği alırken, erişim kontrolü kuralları da uygulanmasını sağlamak mı? Bir SQL benzeri senaryo, böyle altındaki ilk ya da aşağıdaki ikinci olarak bir istek şablonu kullanarak konum soran çevirmek olacaktır:

1) "GÜNCELLEME ... WHERE ID = x"

2) "GÜNCELLEME ... WHERE ID = x AND (SELECT ... DAN ... NEREDE userID = y)"

Senin modeli ilk olması daha muhtemeldir ise, o zaman bir yetkilendirme modeli sorun olabilir. Else, tamam olmalıdır.

Umarım yardımcı olur.

sb.