2

私はphpコーディングが初めてで、基本的にはユーザーがログインするユーザーパネルを作成しており、そこからダッシュボードにアクセスして何かを行うことができます。

これを行うためにphpセッションを使用しています。基本的には、ダッシュボードの上部に次のように配置しました。

session_start();
if(!session_is_registered(myusername)){
header("location:index.php");

これにより、ログインしていないユーザーは index.php にリダイレクトされます。

問題は、次のようにユーザーがダッシュボードから実行できる特定のコマンドがあることです: /dashboard.php?reset=true

また、これらのコマンドを実行しても、何らかの理由でアクティブなセッションは必要ありません。アクティブなセッションがなくても、誰でも /dashboard.php?reset=true にアクセスしてすべてをリセットできます!

人々がこれを行うことを可能にするこのセキュリティ上の欠陥を修正する方法を知っている人はいますか?

ありがとう

4

4 に答える 4

2

簡単な答え: 同じコードを /dashboard.php に入れることはできますか? ファイル

セッション変数を宣言することで、ユーザーが管理者であるかどうかをより適切に確認できます。

リダイレクトする前にログインした場合:

session_start();
$_SESSION['is_admin']="yes" ;

「実行ファイル」で:

if(isset() && $_SESSION['is_admin'] == "yes")
{
  //do your thing
}
else
{
   echo : "you are not allowed to do that";
}

セキュリティに関するその他のヒント:リンク をクリックすると、セキュリティ上の問題がいくつか指摘されます。

于 2012-11-20T05:33:49.620 に答える
0

I guess that by reset you mean password. Just get that part to ask them for the old password as well as the new old. And to stop robots use summat like CAPTCHA,

于 2012-11-20T05:17:13.900 に答える
0

php 5.4.xを使用している可能性があります

session_is_registeredPHP 5.3.0 で非推奨となり、PHP 5.4.0 で削除されました。

isset($_SESSION['myusername'])の代わりに使用session_is_registered

編集

exitヘッダーからリダイレクトした後に常に配置する必要がありますが、これdieも機能します。

于 2012-11-20T05:26:28.053 に答える
0

die呼び出しの後に、またはexitその他の終了方法を配置する必要がありますheader()header()実行を停止しないため、 Location: リダイレクトを送信しているにもかかわらず、コードをダウンダウンし続けます。

于 2012-11-20T05:20:24.093 に答える