2016-04-13 39 views
0

Özel CMS için bir yönetim sistemi geliştiriyorum. Yönetici sitesinin bir parçası olan tüm sayfalarda bir check_user() işlevi kullanıyorum.

function check_user() 
{ 
    session_start(); 

    if ($_SESSION['username'] == "admin") { 

    } else { 
     header("location:admin.php"); 
    } 
} 

biraz basit gibi görünse de siteden istenmeyen üyelerini uzak tutmak için bu yeterlidir: check_user() işlevi yalnızca bunu yapar? $ _SESSION [] vars nelerdir? Bu işlevi geliştirmek için herhangi bir öneriniz var mı?

Şimdiden teşekkürler! register_globals

(tüm son yüklemeler kapalı olacağı ... ama sadece emin olmak için) kapalı IF verilen kodu

+0

Olası çoğaltılabilir [PHP oturum değişkenleri ne kadar güvenlidir?] (Http://stackoverflow.com/questions/1181105/how-safe-are-php-session-variables) – PoX

cevap

1

$ _SESSION yararlanılamaz rağmen bu oturumda parametreler ayarlanır şekline bağlı olarak, sömürülebilirdi. (örneğin, oturum değişkeninde anahtar olarak istek parametrelerini kullanarak)

Bu kodu geliştirmek için, her zaman check_user çağrısından bağımsız olarak bir oturum başlatmanızı öneririm. Bu, check_user'yi yeniden kullanmanızı sağlar.

+0

Bir kullanıcı giriş yaptığında, kontrol edilir. Kullanıcı adı ve şifre aynı satırda veritabanında olsun. Eğer öyleyse, $ _SESSION ['kullanıcı adı'] kullanıcının kullanıcı adı EG .: 'ye ayarlanır. Admin olarak $ _SESSION [' kullanıcı adı '] "admin" olarak ayarlanacaktır. – Zh4rsiest