ログインページvs. htpasswd-より安全なのはどれですか?
質問
単純なログインシステム(レジスタとログイン)が与えられた場合、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
}
これにより、レート制限/ブルートフォース検出を行うことができます。各リクエストでパスワードが送信されないようにセッションを設定し、ユーザーをログアウトして追跡しやすくします。
所属していません StackOverflow