2016-12-22 2 views
0

私は現実の通貨を取り扱っているプロダクション公開のeコマースサイトを持っています。私は、ログインしたユーザ(権限を持つ)だけがその機能を見て、使いたいと思っています。ユーザアクセスのPHPページを直接に禁止する

  1. すべての人が直接ので、内の関数を呼び出す www.mywebsite.com/get_content.php?abc を呼び出す任意の潜在的な脆弱性はありますか?

  2. また、私の現在のコーディング方法は十分ですか?プロダクション用電子商取引のウェブサイトに従うための最良のガイドラインを提供してください。

私はPHPには本当に新しく、セキュリティを実装したいと考えています。 Product.php内のナビゲーションバー

<?php 
    include 'start_session.php'; 
?> 
<html> 
<head> 
</head> 
<body> 
<div class="container"> 
    <?php 
     include 'get_content.php'; 
    ?> 
</div> 
</body> 
</html> 

start_session.php < -A PHPスルー

Product.php < -accessible。簡単に読みやすくするためだけのために他のページ

<?php 
    session_start(); 
?> 

get_content.php < -AのPHPページを越えProduct.phpを複製し、ベストプラクティスについては

<?php 
function abc(){ 
    //do something 
} 

if((isset($_SESSION['user_id']))){ 
    //connect db and get content 
} 
?> 

答えて

1

を維持し、Laravelのようなフレームワークを使用してみてくださいまたはYii2。次に、必要に応じて認証システムを実装します。

独自の認証システムを作成するには、ログインしているユーザーのuser_idでセッションを作成し、ログインしている各ユーザーページの上部にセッションユーザーIDを確認するチェックを作成しますsetはログインページにリダイレクトされます。

ユーザーがログインしていない場合は、よりクリーンな方法で処理します。上部にある簡単なチェックを1回行います。

あなたは時に、追加ユーザーがログインスクリプトを教えてセッションにいくつかの変数ログインスクリプトに次に start_session();

get_content.phpファイル内の
<?php 
start_session(); 
function abc(){ 
    //do something 
} 

if((isset($_SESSION['user_id']))){ 
    //connect db and get content 
} 
?> 

を呼び出したいとしている

if(!isset($_SESSION['users_id'])){ 
//redirect to login page and exit script 
header('Location: /login.php'); 
exit; 
} 
+0

私の場合、Product.phpとget_content.phpを含むすべてのページでif(isset($ _ SESSION ['user_id'])){} else {// redirect to index.php}を追加する必要がありますか?どちらも? –

+0

私はすべての機能を2つの異なるページに入れました。公開されている機能用の1ページと、ログインしているユーザー向けの2ページ。次に、2番目にログインしたユーザーのセッションチェックを追加するだけです。私はちょうど正しいページに正しい機能を配置するのを追跡する必要があります。 –

+0

ログインしていないかどうかを確認し、ヘッダ( 'Location:/login.php')を使ってログインページにリダイレクトしてください。出口; – Illuminati

1

ファーストユーザーはサイトにログインします。これは、基本的などれも安全な方法ですが、あなたは、ユーザーがログインしていない場合、彼らはスクリプトにアクセスすることはできません。この

<?php 
start_session(); 
if ($_SESSION['user_logged_in'] == true) { 
    function abc(){ 
     //do something 
    } 

    if((isset($_SESSION['user_id']))){ 
     //connect db and get content 
    } 
} else { 
    //redirect user to the login screen 
} 
?> 

ような何かにあなたのget_content.phpファイルを変更した後アイデア

$_SESSION['user_logged_in'] = true; 

を与えます

+0

あなたの$ _SESSION ['user_logged_in']はmy $ _SESSION ['user_id']に似ていると思いますが、ユーザーID(データベースからのID)を格納してブール値をチェックするだけです。私は正しい? –

+0

ええ私はちょうど非常に基本的な方法を示した。私は '$ _SESSION ['user_id']'をよく保存し、後でDBを呼び出して一致するかどうかをチェックします。 –

+0

if(!isset($ _ SESSION ['users_id'])){ //ログインページにリダイレクトしてスクリプト を終了する必要がない場合は、巨大なスコープを避けるようにしてください。 – Illuminati

関連する問題