Güvenlik sorusu

5 Cevap php

müşteri adınızı ve şifrenizi girmeniz gerekir nerede cms i, index.php var. onlar doğruysa, o cm olduğu, admin.php için moove edeceğiz.

ama şimdi korsan / admin.php cms girebilirsiniz, bu yüzden benim güvenlik artık korkunç.


i $_SESSION değişkeni kullanabilirsiniz, biliyorum.

index.php - i $ _SESSION ['başarı'] bazı değer verebiliriz:

$_SESSION['success'] = TRUE, ve admin.php sadece bunu doğrulamak

admin.php

if($_SESSION['success'] == TRUE)
{
     my script here...
}
else header("Location: index.php");

but i want to rich this effect without SESSION. could you give me an idea, how can i do it?

teşekkürler

5 Cevap

Web uygulama güvenliği gerçekten derin gider. Öncelikle, oturumları kullanmanız gerekir, ya da seans eşdeğer bir uygulama.

Kullanıcı günlükleri ve bir oturum kimliği ve bir çerez ve veritabanında saklanır kendi adı gerekir. Veritabanında Eğer aynı zamanda oturum kaçırıldı görmüş ise söyleyebilirim ki, bu tür kendi kullanıcı ajan olarak onlar hakkında bazı bilgileri saklamak gerekir. Bazı insanlar IP adresini saklamak. Kullanıcı bir mobil cihazınızdan uygulamayı kullanarak eğer kendi IP adresi sık sık yenilemek olabilir Bu, çalışmaz.

Bir kullanıcı, bir idari sayfa yükler her zaman, onlar geçerli ve o sayfayı kullanma iznine sahip bir oturum ve kullanıcı çerez olduğunu doğrulayın. Ardından isteği bu o kullanıcı hakkında depolanan bilgileri kullanarak başladı aynı bilgisayardan geldi doğrulayın.

Eğer bir idari eylem yol açabilir yönetim sayfasına koymak her form veya bağlantı için benzersiz bir tanımlayıcı ile gizli bir alan ya da değer katacak. Idari eylem yol açabilecek sayfada öğe başına bir tanımlayıcı. Bu belirleyicileri üretmek, onlar belirlenmesi ne eylemi ile birlikte veritabanında saklayabilirsiniz. Bu Nonce denir, bu (örneğin kayıtlarının güncellenmesi veya kullanıcıların silme ya da banka hesabına para havale gibi) her yönetici isteği ile teslim edilecektir. Istek hizmet olduğunda, sunucu nonce veritabanında saklanan ne maçlar kontrol etmelisiniz, ve sonra ondan kurtulmak. O uymuyorsa, şans istek çapraz site isteği sahtekarlığı saldırısı ile yapıldı vardır.

Bunlar sadece bazı doğrulanmış kullanıcılar ile etkileşim sırasında akılda tutulması gereken şeyler vardır, ve tabii ki bu tür XSS gibi dışarı izlemek için diğer şeylerin bir dizi var.

Güvenlik çok zor, ve sizin web uygulaması kurşun geçirmez güvenlik stratejileri garanti olmayabilir iken, kendi şifreleri ve kişisel bilgileri korumak için kullanıcılara borçluyuz. OWASP (çok) daha fazla bilgi için bkz.

Hayır, siz oturumları olmadan bunu yapmak istemiyorum. Bunu yapmanın başka yolları, kurabiye ve yönlendirme, bir ekran kapı kilitleme gibi güvenli.

Deftere kodu yanlış ve non-sense hem de. (== true olmalı ve neden onu yerine başarı daha, error üzerinde komut dosyasını görüntülemek için izin vardır?)

Olsa fazla noktaya, neden oturumları kullanmak istemiyorum? Eğer bir şekilde kullanıcının kimliğini doğrulamak gerekir, ve o sayfaları değişiklikleri her zaman oturum için kullanıcı zorlamak zorunda kalmamak o devletin çeşit saklanmasını gerektirir.

İki seçeneğiniz var:

  1. Her (tarayıcı görünmeden arka planda yapar kullanımı HTTP kimlik,) istek üzerine kimlik doğrulaması
  2. bir kez daha sonra kullanıcılar bilgisayarda tuşunun çeşit depolamak ve sunucu üzerinde bir başvuru korumak kimlik doğrulaması

İlk işleri, ancak kullanıcı-dostu daha az güvenli ve daha az olduğunu. İkinci bir seans ne olduğunu; Eğer kendiniz reimplement çalışırsanız, şansını çeşitli güvenlik delikleri ile sona erecek vardır. Eğer oturumları kullanmak istemediğiniz herhangi bir fiili nedenler vardır?

Kendi güvenlik sistemi uygulamak yapabilmek için, kullanıcı devlet olması mümkün, başka bir deyişle, istekleri karşısında kullanıcıyı takip edebilmek gerekiyor. Oturumlar PHP bunu yapmak için bir yol vardır. Ya oturumda inşa kullanın veya özel bir kendinize uygulayabilirsiniz. Bu iki seçenekten sonra gerekli daha zordur ve sizin durumunuzda yararlı değildir muhtemeldir.

PHP oturumları hakkında hatırlanması gereken bir önemli şey her zaman start them for every request zorunda olmasıdır. Sen, yerde yapılandırma dosyasının belki çeşit küresel dahil dosyası olmalıdır. Ben bunu her istek için düzgün çalıştığından emin olmak için o dosyanın üst yakınında session_start(); yerleştirin öneririz. Unutmayın, the session must be started before any headers are sent, diğer bir deyişle, before any output is sent.

Bir geri sitenize bir kısmı güvenli erişim için PHP kullanarak çizmek isteği bir PHP dosyası için ise sadece çalışır. Eğer görüntü, belge, ya da bir PHP ağ geçidi / filtre çeşit aracılığıyla hizmet vermekteyiz sürece, korumalı istediğiniz diğer medya varsa, örneğin, bu dosyalar kimlik doğrulaması olmadan erişilebilir muhtemeldir.

. Gerekli kodlama - I suggest you look into basic or digest authentication Apache tarafından sağlanan söyledi ihtiyaçlarınız için , büyük olasılıkla yeterli güvenliği daha fazla sağlamak ve uygulamak son derece kolaydır tüm. Dahası birçok web host Bu kimlik doğrulama türünü yönetmek için bir yönetici araç var ve genellikle yapmanız tüm klasörü seçin ve kullanıcı adı ve parola ayarlamak ve "şifre korumalı bir klasörde", "kilitli klasörü," vb gibi bir şey denir ki bitirdiniz.