1

私は次のように非常に基本的な認証スクリプトを実行することを検討しています。

<?php
   // admin.php
   session_start();

   if($_GET['login'] == 'adminLoginWord')
   {
       $_SESSION['auth'] = true;
   }

   if($_SESSION['auth'])
   {
       // code to show Admin control panel
   }
   else
   {
       echo 'Please login.';
   }

したがって、ログインするには、誰かがURLに移動することを知っている必要があります

admin.php?login=adminLoginWord

これは安全な認証方法ですか?

4

7 に答える 7

3

それはまったく安全ではありません、あなたはコンピュータの履歴に「パスワード」を残すでしょう、それは盗聴する人に対して非常に脆弱です...など

つまり、安全性は常にアプリケーションによって異なりますが、より安全なアプローチが必要な場合は、POST変数を使用して次のように比較してください。

if($_POST['pass'] == 'password123'){
    echo 'Login OK';
}

(これはまだ最善のアプローチではありませんが、GET変数よりも優れています)

于 2012-03-24T19:06:53.730 に答える
1

特にこの場合、私はただ太っていて、必要以上に複雑にしていました.

これには .htaccess ファイルで十分でした...おっと!

于 2012-04-13T13:16:22.673 に答える
0

いいえ、安全ではありません。sha1を使用して特別なログインをハッシュし、そのsha1が「adminLoginWord」のsha1と等しいかどうかをテストできます。

さらに、あなたの場合は、POSTを使用する必要があります。

于 2012-03-24T19:07:20.473 に答える
0

このシステムを使用すると、パスワードがブラウザの保存履歴に保存されることに注意する必要があります。これをブックマークとして追加することもできます...

于 2012-03-24T19:08:40.393 に答える
0

いいえ、安全ではありません。

代わりに POST を使用し、HTTPS も使用する必要があります

于 2012-03-24T19:12:19.333 に答える
0

簡単な基本認証を行いたいというあなたの気持ちは理解していますし、ここにいる全員が有効なセキュリティの提案をしています。セキュリティは気にしないが、資格情報を URL に渡すよりも安全性を高めたい場合は、次のような方法を試すことができます (もちろん、フォーム/ページ領域にさらに多くの HTML を追加することもできます)。

/* admin.php */
<?php

$username = "adminLoginWord";
$password = "adminLoginWordPassword";
$msg = "";

if ($_POST['mySiteUsername'] == $username && $_POST['mySitePassword'] == $password){
  $_SESSION['auth'] = true;
} else {
  $msg = "Invalid Username/Password Combination";
}

if(!$_SESSION['auto']){
  $html = "<html>
  <body>
    <div class='error'>$msg</div>
    <form action='admin.php' method='POST'>
       <label for='mySiteUsername'>Username:</label>
       <input type='text' name='mySiteUsername' />
       <label for='mySitePassword'>Password:</label>
       <input type='password' name='mySitePassword' />
    </form>
  </body>
  </html>";
} else {
  // Authorized
}
?>
于 2012-03-24T19:31:37.037 に答える
-1

パスワードを暗号化してから、GET で送信するか、POST を使用します

于 2012-03-24T19:08:02.000 に答える