0

PHPアプリケーションで使用しているユーザー認証コードがどれほど安全かを知る必要があります。

これが私のログインチェック機能です

// Is Login
//*********************************************************************************
public function isLogin()
{
    $validation = new Validation();

    if(!$validation->isEmpty($_SESSION["AdminId"]) && !$validation->isEmpty($_SESSION["AdminUsername"]) && !$validation->isEmpty($_SESSION["AdminName"]))
    {
        return true;
    }
    else
    {
        return false;
    }
}

すべてのユーザーアカウントのページの上部から呼び出す認証ファイルがあります。

if (!$admin->isLogin())
{
    header("Location: index.php?type=warning&msg=" .urlencode(ADMIN_INVALID_LOGIN));
    exit();
}

たとえば、Adminusernameは管理者の実際のユーザー名、adminnameは管理者のアルファベット名、adminidは$ _SESSION ["Adminusername"] =管理者などのmysqlテーブルのレコードIDですが、暗号化後にこの値を保存しています。それ。

これが値を保存してチェックするだけの安全な方法であるか、ソルトやタイムチェックなどのより安全にするための何らかの高度な機能が必要であるかを知る必要があります。

私はあなたの提案とフィードバックをいただければ幸いです。可能であれば、認証コード/クラス。

前もって感謝します。アマルディープシン

4

2 に答える 2

0

この値を暗号化して保存しています

わかりません... なぜ AdministratorName を暗号化するのですか?

確かにご存知のように、セッションはサーバー側にあり、コードがセッションデータに何を書き込むかを決定するため、ユーザーは自分のセッションを好きなように操作できません。ソルティングやタイムチェックはセキュリティレベルを上げないと思います。

HTTP はステートレスであるため、各セッションは ID で識別され、ほとんどの場合、クライアント側の Cookie に保存されます。このサーバーへの各リクエストには、この SID が含まれています。これは、サーバーが訪問者を識別する唯一の方法であるためです。

HTTP トランスポートを使用する場合、データ (SID も終了) は暗号化されずにインターネット経由で送信されます。そのため、ハッカーはあなたの SessionID を読み取り、あなたのセッション (ログインされたユーザー データを含む) を乗っ取る可能性があります。これを防ぐために、ログインしているユーザーに HTTPS 接続を強制することができます。

すべてのページを https のみに切り替える可能性がある場合は、そうしてください。http と https を切り替える必要がある場合 (たとえば、ユーザーがログインしている場合のみ https を使用する場合)、セキュリティを確保することが非常に難しくなります。

于 2012-10-30T16:22:46.713 に答える
0

セッション再生成IDを使用して、すべてのリクエストで新しいIDを取得するため、セッションハイジャックを防ぐことができます..このマニュアルを読んでください:http://php.net/manual/en/function.session-regenerate-id.php

于 2012-10-30T15:51:17.613 に答える