質問

単純なログインシステム(レジスタとログイン)が与えられた場合、2つの選択肢のどれがより安全なのかを示します。

  • htaccessおよびhtpasswdファイルを使用して、ユーザーを保存および認証する
  • PHPを使用してCrudとMySQL(または他のデータベース)を使用して情報を保存します

ユーザー情報は、純粋にusername-passwordで構成されています。

もちろん、両方のオプションでベストケースが想定されます。MySQL注入は説明され、パスワードはMD5/SHA1/MD5+SHA1/その他の平均暗号化などです。

あなたが疑問に思っている場合、最初のケースでは、PHPはHTPASSWDファイルにユーザー資格情報を追加します。 (見る これ 実装の例については質問。)

役に立ちましたか?

解決

私は常にログインフォームだと言います(これにより、標準セッションベースの認証を意味すると思います)。

  • .htaccess 認証はすべてのリクエストでパスワードを送信します(もちろん、SSLはここで役立ちます)

  • .htaccess 認証には、Apacheでデフォルトで制限 /ブルートフォース保護がありません

  • からログアウト .htaccess 認証 aです 雌犬

他のヒント

飛行セキュリティの観点から、2つの方法にはほとんど違いはありません。しかし、Pekkaの懸念はすべて有効です。ログインフォームとは対照的に、HTTP Basic Auth(つまり、ポップアップボックス)を使用するだけの場合は、PHPを介して実行できます。探していることによって $_SERVER['PHP_AUTH_USER'] また、次のような401の応答を送信してください。

    if (!isset($_SERVER['PHP_AUTH_USER'])) {
            header('WWW-Authenticate: Basic realm="MY REALM"');
            header('HTTP/1.0 401 Unauthorized');
            echo 'Please Contact us if you are having problems logging in';
            exit;
    } else {
            //not their first time through
            //check their username and password here
            $username = trim($_SERVER['PHP_AUTH_USER']);
            $password = trim($_SERVER['PHP_AUTH_PW']);
            //do login
    }

これにより、レート制限/ブルートフォース検出を行うことができます。各リクエストでパスワードが送信されないようにセッションを設定し、ユーザーをログアウトして追跡しやすくします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top