htaccessをセキュリティオプションとして使用し、ログインフォームを使用する

私はPHPを学んでおり、セキュリティを学ぶことに夢中です。注射、セッション盗難などの攻撃のいくつかについてはいくつか知っていますが、私は自分のCMSを完全なセキュリティでコード化したいと考えています(可能な場合)。

私はディレクトリ内の.htaccessセキュリティを削除します。すべてのCMSファイルが1つのディレクトリにあるので、これは良いオプションです。私はちょうどウェブサイトでこれを読んでいます:

HTAccessはWebサーバーに依存するため、最も安全なパスワード保護方法です。有効なユーザー名とパスワードは、他のスクリプトと同様に、Webブラウザと共有されたり、HTMLに保存されることはありません。 >

これは本当ですか?私は、それは "unhackeable"という意味ですか?もちろん、.htaccessファイルを隠すような特別なセキュリティがあります。

これが真実ならば、.htaccessのセキュリティでサイトをハッキングする方法はありません。ポップアップウィンドウの代わりにフォームを使用すると、CMSにログインできますか? 「パスワードを忘れた」オプションを使用する方法はありますか?

参考のための例とリンクとして、どんな援助も評価されません。

1

2 答え

HTAccessはパスワード保護の最も安全な方法です。   有効なユーザー名とパスワードはWebサーバーに依存します   Webブラウザと共有されたり、HTMLに格納されることはありません   他のスクリプトと一緒にいてください。

私はこの文を最初に書いた人を少し怖がっています。

ユーザー名とパスワードは、衛生的なプログラミングの実践で最も多く無視されている場合を除いて、ウェブブラウザと共有されたり、HTMLで保存されることはありません 。誰かがストローマンの議論として "オプション"として厄介なことを提示するだろう。私はより良いガイドを見つけることをお勧めします。

サーバセキュリティのための htaccess の仕組みもちょっとした誤解です。ディレクトリ内の .htaccess ファイルは、実際に共有ホスティングサイトのクライアントがApache構成変数をある程度制御できるようにするためのもので、完全に安全なCMSシステム "(あたかもそのようなことが起こっているかのように:)あなたは認証と承認アクセス制御メカニズム。単一の要求ごとに .htaccess ファイルが再ロードされ、再解析され、再構成されますが、サイト全体のApache構成は一度ロードされ、一度解析され、

サーバーベースのメカニズムは、 HTTP基本認証(ユーザー名を叫ぶのとほぼ同じです)パスワードが混雑している場合)、または HTTPダイジェスト認証(これは大幅に改善され、ユーザーが良いパスワード、おそらく曖昧な安全性)。いずれかを TLS でトンネリングするのは賢明でしょう。 本当に rel = "nofollow">クライアント証明書を参照してください)。

これらのメカニズムは、認証のためにダイアログボックスをポップアップするようにブラウザに要求します。ユーザー名とパスワードをWebページに「美しい」方法で統合したい場合は、フォーム提出、セッション情報の保存、内部セキュリティのメカニズムの確認などを通じてすべてのユーザー名とパスワードの認証チェックを行う必要がありますそれが必要なときはいつでも許可する。あなたはすべての責任を負います。 (また、やはり、TLSが行く方法です)。Webサーバーはあなたをまったく助けることはできません。 (さらに、あなたはHTMLでブラウザにユーザー名やパスワードを送信しないでしょう...それでも私は恐怖です。)

3
追加された
一度誰かが認証したらアプリケーション全体にアクセスを許可するには、確実にサーバーのHTTP認証を使用します。ユーザが誰であるかを知ることに基づいてきめ細かいコントロールを提供したい場合(例えば、ユーザが自分の投稿を削除することを許可するが他の人の投稿は削除しないようにする)、認証のためにフォームでPHPで行う。
追加された 著者 sarnold,
この回答にお時間をいただきありがとうございます。要約すると、htaccessをセキュリティシステムとして使用するか、注入などを避けるためにいくつかの "trics"を含むPHPコードを使用することをお勧めしますか?再度、感謝します。!
追加された 著者 Roberto de Nobrega,
わかった!私の疑問をクリアするためにあなたの時間を取ってくれてありがとう! :)
追加された 著者 Roberto de Nobrega,

これはあなたのお探しですか?これにより、PHPフォームを使用してhtaccessからログインできるようになります

<?php
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
        header('WWW-Authenticate: Basic realm="My Realm"');
        header('HTTP/1.0 401 Unauthorized');
        echo 'Text to send if user hits Cancel button';
        exit;
    } else {
        echo "

Hello {$_SERVER['PHP_AUTH_USER']}.

"; echo "

You entered {$_SERVER['PHP_AUTH_PW']} as your password.

"; } ?>

リファレンス

2
追加された
あなたのコードと.htaccessの間の接続は何ですか?
追加された 著者 EML,
基本認証は安全ではありません !すべての要求に対して、平文で同等のパスワードを送信します。 (ダイジェスト認証には平文のパスワードが必要なため、安全ではありません)。
追加された 著者 Jacco,
私はそれが単なるデモンストレーションの例だと理解していますが、OPはセキュリティに本当に関心があるので、このコードサンプルにクロスサイトスクリプティングの脆弱性があることを指摘しました。
追加された 著者 Cheekysoft,
そして、htaccessで設定したユーザー名とパスワードでこの作業を行います。これは安全か、この方法でアクセス資格情報を検出する方法がありますか?ありがとう! htaccessのデータをphpで変更するとどうなりますか?この場合、パスワードを忘れたオプションを使用すると、新しいパスワードを生成するので、ユーザーはログインして、別のユーザーがログインできるようになります。私の考えは、PHPを単独で使うか、HTACCESSを使って、より安全なものを評価することです。
追加された 著者 Roberto de Nobrega,
回答ありがとうございます。! ;)
追加された 著者 Roberto de Nobrega,
パスワードを変更するには、サーバーサイドスクリプトを起動する必要があります。あなたはこれを調べることができます
追加された 著者 Jamie Hutton,