私は、ユーザーが特別な機能を操作できるようにログインする必要のある簡単なサービスを実行しています。
私のMySQLデータベースには、username
,password
およびuser_id
が格納されています。
ユーザーがログインしたいときは、profile.phpに投稿されたユーザー名とパスワードを入力する必要があります。
profile.phpは簡単なチェックを行います。その瞬間から
// Sanity Check
if(empty($_POST['smart_email'])|| empty($_POST['smart_password']))
{
echo 'Sorry, wrong login/passwd';
exit;
}
else
{
//
$smart_email = $_POST['smart_email'];
$smart_password=$_POST['smart_password'];
// Check if registerd and password matches
if(DB_IsAuthorized($smart_email, $smart_password) == true)
{
// Obtain proper UserID from the database
$UserID = DB_GetId($smart_email);
// set the session user_id variable
$_SESSION['user_id'] = $UserID;
//
// Display the User profile page
//
}
}
を、ユーザ関連あるすべてのページには、このユーザーがログインしたかどうかを調べるために$_SESSION
にuser_id
セットのチェックを持っており、認可されています。
if (isset($_SESSION['user_id']) && is_numeric($_SESSION['user_id']) && $_SESSION['user_id']>0)
{
// USER IS LOGGED IN
}
質問です:ユーザーがNON LOGGEDからページを確保するのに十分な、この$_SESSION['user_id']
チェックですか?
実際、はい、十分です。しかし、あなたの訪問者は、他の手段なしに、彼らのアカウントに対するほとんどの攻撃に対して価値があります。 httpsを作成するために、フレームワークとSSL証明書を使用するよう提案することができます。それを否定しないでください!フレームワークを作成する人には多くの経験があります! ちなみに、私はYiiが好きです。それはむしろ単純です:) – MaxXx1313
あなたのサイトにページを確保することについては、十分なことはないと思います。しかし、一般に単純な '$ _SESSION'チェックで十分であると思います。 –
多分、私は最初ここで話題にはならなかったでしょう。 '$ _SESSION'を使って、ログインしていないユーザからのコンテンツをブロックできるかどうかを尋ねていますか?または '$ _SESSION'がどれほど安全で、ブルートフォース攻撃、ハイジャックなどの分野に入るのでしょうか? – chris85