2015-11-27 22 views
6

私は、ユーザーが特別な機能を操作できるようにログインする必要のある簡単なサービスを実行しています。

私の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 
     // 
    } 

} 

を、ユーザ関連あるすべてのページには、このユーザーがログインしたかどうかを調べるために$_SESSIONuser_idセットのチェックを持っており、認可されています。

if (isset($_SESSION['user_id']) && is_numeric($_SESSION['user_id']) && $_SESSION['user_id']>0) 
{ 
    // USER IS LOGGED IN 
} 

質問です:ユーザーがNON LOGGEDからページを確保するのに十分な、この$_SESSION['user_id']チェックですか?

+1

実際、はい、十分です。しかし、あなたの訪問者は、他の手段なしに、彼らのアカウントに対するほとんどの攻撃に対して価値があります。 httpsを作成するために、フレームワークとSSL証明書を使用するよう提案することができます。それを否定しないでください!フレームワークを作成する人には多くの経験があります! ちなみに、私はYiiが好きです。それはむしろ単純です:) – MaxXx1313

+1

あなたのサイトにページを確保することについては、十分なことはないと思います。しかし、一般に単純な '$ _SESSION'チェックで十分であると思います。 –

+0

多分、私は最初ここで話題にはならなかったでしょう。 '$ _SESSION'を使って、ログインしていないユーザからのコンテンツをブロックできるかどうかを尋ねていますか?または '$ _SESSION'がどれほど安全で、ブルートフォース攻撃、ハイジャックなどの分野に入るのでしょうか? – chris85

答えて

3

この質問は広すぎますが、簡単な答えはです。です。

まず、ファイアウォールやその他の必要なセキュリティツールを使用してハッカーからユーザーを保護するためにhttpsが必要です。

第二に、あなたは拡張子を変更するためにhtaccessファイルを使用する必要があるが、代わりの.php

のショーユーザーの.htmlを言う第三に、セッションがハッカーによって簡単にハイジャックすることができます。したがって、プレーンテキストではなく暗号化されたセッション値を常に保存してください。

世話をするにはさらに多くの問題がありますが、複雑すぎると広いです。

+0

) - これは明らかです。 2)なぜ.phpではなく.htmlを表示するのですか?ポイントは何ですか? 3)意味があります ** ** no **の回答はちょっと変わっていますが、すべてのページでPHPで$ _SESSIONを使用していると言われています - これらの3点を取得すると、$ _SESSIONチェックを使用しても安全です。 – PeeS

+4

ポイント2については、「不明瞭化によるセキュリティーは最も弱いセキュリティーの1つです。 -http://php.net/manual/en/security.hiding.php – chris85

+0

PHPをhtmlに変更することは、ハッカーの攻撃を減らすことが証明されています。これらのポイントは$ _SESSIONでは十分ですが、他の攻撃では十分ではありません。答えは、コードがうまく書かれていないことを示すことでした。暗号化が必要で、単純なSQLインジェクションも容易です。 – Manikiran

関連する問題