Php güvenlik sorusu

3 Cevap php

Sadece bir düşünce vardı

post.php

if (isset($_SESSION['id'])) {

if (isset($_POST['comment'])) {
insert()
}

<form method="post" action="post.php">

<textarea name="comment"></textarea>

<input type="submit" class="btn" value="Submit">

</form>

}

$ _SESSION ['Id'] post.php erişmek için ayarlanması gerekir. Bu yeterince güvenli mi?

Sadece belki birisi sadece kendi sitesinde bir oturum oluşturmak ve kendi post.php yapmak ve benim siteye yönlendirebilir düşünüyorsun? Bunu yapabilir?

<form method="post" action="http://mysite.com/post.php">

<textarea name="comment"></textarea>


<input type="submit" class="btn" value="Submit">

</form>

Benim sınırlı ingilizce Exucse

3 Cevap

Sadece genel tavsiye olarak, ben her zaman "eğer-eğer-eğer" over "kefalet-out-soon" tercih ederim. Anlamı, üst daha fazla gibi görünmelidir:

if (!isset($_SESSION['id'])) {
    // display_error();
    // redirect()
    // whatever else needs to be done
    exit;
}

// continue as planned

Asıl sorun insanların paket midflight müdahale ve istediklerini olmak formun değerlerini yeniden olabilir. Ne güvenlik hedefleri gerçekleştirmek için çalışıyoruz? İnsanlar her zaman istemciden gönderilen değerler üzerinde tam kontrol olacak, uygulama geri geliyor verilerin bir şey almaz emin olun.

Firefox için kurcalamak Veri bak: https://addons.mozilla.org/en-US/firefox/addon/966

i herhangi yakın bir sorun göremiyorum. Bu kritik if (Stefan Mai önerilen) ağ trafiğini kaçırma kişi bunu kurcalamak değil, böylece, emin veri https üzerinden gönderilir olun. Aksi takdirde, Tamam gibi görünüyor - sürece hiç kimse kullanıcıların oturum çerezleri çalmak gibi.

yöntem sadece başka bir kodlama tarzı decezes. Bu haddizatında güvenliğini artırmak değil, şeklinde hata yapmaktan özensiz programcılar engelleyebilir:

if (checkIfLoggedIn()) {
  doPrivateThing();
}

doAnotherPrivateThing();  // bug: the programmer should have 
                          // put that into the if-conditional

aksi halde, session id tanımlama içinde saklanan emin olun, ve URL üzerinden şeffaf geçti asla! Çerezler devre dışı olup olmadığını ben günümüzde php.ini içinde varsayılan ayarlar hakkında emin değilim, ama url yapmak için kullanılan otomatik olarak yeniden yazar. daha iyi kontrol edin.

kadar hatırladığım gibi, ini seçeneği session.use_only_cookies (etkin olmalıdır) olduğunu

php/session security

güncelleme:

"Sadece belki birisi sadece kendi sitesinde bir oturum oluşturabilirsiniz düşünme"

hayır, bu işe yaramayacak. oturumları session_start(); (veya bazen otomatik) üzerine oluşturulur. $_SESSION['id'] session_id(); ile ilgisi yoktur, sadece bazı değişken bulunuyor. Diğer gerçekten karıştırmayın çünkü çok iyi, adlandırılmış değil gerçi (maintainability!). daha iyi $_SESSION['isUserLoggedIn']; ya da böyle bir şey isim.