-1

あなたはあなたのウェブサイトを見るためにユーザーに割り当てられたパスワードを入力することを要求することが何と呼ばれるか知っていますか?たとえば、このサイトのようにクリックします。.htaccessだと思っていたのですが、ディレクトリを保護したくありません。セキュリティ上の問題でディレクトリ名を変更せずに、友達が自分のサイトにログインできるようにしたいだけです。

4

3 に答える 3

2

Apache htaccess は必要なもののように思えます。リンク先のサイトには、PHP またはサイトのコードで記述された特注のサイト ログインがあります。

これを行うために Apache をセットアップするのは簡単ですが、最初に htpasswd コマンドでパスワードを作成します。

    htpasswd -c .htpasswd dave

次に、これを .htaccess ファイルに入れます。

    AuthUserFile /full/path/to/.htpasswd
    AuthType Basic
    AuthName "My Secret Folder"
    Require valid-user
于 2012-11-18T02:27:52.903 に答える
0

通常、これはサーバー側のスクリプトとデータベースを使用して行われます。Javascript は使用できません。コードをいくら難読化しても、誰でも右クリックして [ソースを表示] をクリックしてパスワードを見つけることができるからです。タグ付けされたphpが表示されます。PHPでは、かなり単純です。送信するユーザー名とパスワード ボックスを使用して HTML フォームをセットアップします (GET ではなく POST を使用します。そうしないと、閲覧履歴と URL バーにパスワードが表示されます)。フォームの例は次のようになります。

    <html>
    <body>
    <form action="login.php" method="post">
        Enter your username: <input type="text" name="user" /> <br />
        Enter your password: <input type="text" name="pass" /> <br />
        <input type="submit" value="Login" />
    </form>
    </body>
    </html>

次に login.php で:

    <?php
         session_start();

         $db = mysqli_connect("server","db_user","db_pass","database_name");
         $stmt = $db -> prepare("SELECT pass FROM users WHERE username=?");
         $stmt -> bind_param("s",$_POST['user']);
         $stmt -> execute();
         $stmt -> bind_result($result);
         if ($_POST['pass']==$result)
         {
              $_SESSION['auth'] = "yes";
              header("Location: index.php");
         }
         else
         {
               die("Authentication rejected!");
         }
    ?>

次に、「パスワード保護」したいすべてのファイルの先頭に次のコードを配置するだけです。

    <?php
         session_start();
         if (isset($_SESSION['auth']))
         {
              if ($_SESSION['auth']!="yes")
              {
                  header("Location: login.php");
              }
         }
         else
         {
              header("Location: login.php");
         }
    ?>

これは、少なくともユーザー列とパスワード列を含む users という名前のテーブルを持つ MySQL データベース (無料でインストールが簡単) があることを前提としています。このコードを理解するのは非常に簡単で、これが唯一の方法ではありません! ただし、入力のサニテーションなどの基本的な必需品 (他の場所で読むことができます) が含まれているため、これは適切な方法です。

幸運を!これは、コンピューターのセキュリティにおいて非常に重要な大きな問題です。実際、これには 10 億ドルの費用がかかる問題があります。

于 2012-11-18T02:35:39.473 に答える
0

これは一般的に「ログインシステム」と呼ばれ、多くの場合、ユーザー名も必要です(ただし、例ではありません)。.htaccessPHP またはその他のスクリプト言語で実行する必要があります。

通常、ログイン システムには、入力の検証とデータベースのスキルが必要です。それらを所有していない場合は、PHP、XSS、Sql インジェクション、Mysql、および PDO について学習することを強くお勧めします。

于 2012-11-18T02:27:32.177 に答える